diff options
| -rw-r--r-- | fs/cifs/cifs_fs_sb.h | 1 | ||||
| -rw-r--r-- | fs/cifs/connect.c | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/fs/cifs/cifs_fs_sb.h b/fs/cifs/cifs_fs_sb.h index 246a167cb913..9e771450c3b8 100644 --- a/fs/cifs/cifs_fs_sb.h +++ b/fs/cifs/cifs_fs_sb.h | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #define CIFS_MOUNT_DYNPERM 0x1000 /* allow in-memory only mode setting */ | 35 | #define CIFS_MOUNT_DYNPERM 0x1000 /* allow in-memory only mode setting */ |
| 36 | #define CIFS_MOUNT_NOPOSIXBRL 0x2000 /* mandatory not posix byte range lock */ | 36 | #define CIFS_MOUNT_NOPOSIXBRL 0x2000 /* mandatory not posix byte range lock */ |
| 37 | #define CIFS_MOUNT_NOSSYNC 0x4000 /* don't do slow SMBflush on every sync*/ | 37 | #define CIFS_MOUNT_NOSSYNC 0x4000 /* don't do slow SMBflush on every sync*/ |
| 38 | #define CIFS_MOUNT_FSCACHE 0x8000 /* local caching enabled */ | ||
| 38 | 39 | ||
| 39 | struct cifs_sb_info { | 40 | struct cifs_sb_info { |
| 40 | struct cifsTconInfo *tcon; /* primary mount */ | 41 | struct cifsTconInfo *tcon; /* primary mount */ |
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 6e1fe3a7f27d..399b60129b74 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
| @@ -98,6 +98,7 @@ struct smb_vol { | |||
| 98 | bool noblocksnd:1; | 98 | bool noblocksnd:1; |
| 99 | bool noautotune:1; | 99 | bool noautotune:1; |
| 100 | bool nostrictsync:1; /* do not force expensive SMBflush on every sync */ | 100 | bool nostrictsync:1; /* do not force expensive SMBflush on every sync */ |
| 101 | bool fsc:1; /* enable fscache */ | ||
| 101 | unsigned int rsize; | 102 | unsigned int rsize; |
| 102 | unsigned int wsize; | 103 | unsigned int wsize; |
| 103 | bool sockopt_tcp_nodelay:1; | 104 | bool sockopt_tcp_nodelay:1; |
| @@ -843,6 +844,9 @@ cifs_parse_mount_options(char *options, const char *devname, | |||
| 843 | /* default to using server inode numbers where available */ | 844 | /* default to using server inode numbers where available */ |
| 844 | vol->server_ino = 1; | 845 | vol->server_ino = 1; |
| 845 | 846 | ||
| 847 | /* XXX: default to fsc for testing until mount.cifs pieces are done */ | ||
| 848 | vol->fsc = 1; | ||
| 849 | |||
| 846 | if (!options) | 850 | if (!options) |
| 847 | return 1; | 851 | return 1; |
| 848 | 852 | ||
| @@ -1332,6 +1336,8 @@ cifs_parse_mount_options(char *options, const char *devname, | |||
| 1332 | printk(KERN_WARNING "CIFS: Mount option noac not " | 1336 | printk(KERN_WARNING "CIFS: Mount option noac not " |
| 1333 | "supported. Instead set " | 1337 | "supported. Instead set " |
| 1334 | "/proc/fs/cifs/LookupCacheEnabled to 0\n"); | 1338 | "/proc/fs/cifs/LookupCacheEnabled to 0\n"); |
| 1339 | } else if (strnicmp(data, "fsc", 3) == 0) { | ||
| 1340 | vol->fsc = true; | ||
| 1335 | } else | 1341 | } else |
| 1336 | printk(KERN_WARNING "CIFS: Unknown mount option %s\n", | 1342 | printk(KERN_WARNING "CIFS: Unknown mount option %s\n", |
| 1337 | data); | 1343 | data); |
| @@ -2463,6 +2469,8 @@ static void setup_cifs_sb(struct smb_vol *pvolume_info, | |||
| 2463 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID; | 2469 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID; |
| 2464 | if (pvolume_info->dynperm) | 2470 | if (pvolume_info->dynperm) |
| 2465 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DYNPERM; | 2471 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DYNPERM; |
| 2472 | if (pvolume_info->fsc) | ||
| 2473 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_FSCACHE; | ||
| 2466 | if (pvolume_info->direct_io) { | 2474 | if (pvolume_info->direct_io) { |
| 2467 | cFYI(1, "mounting share using direct i/o"); | 2475 | cFYI(1, "mounting share using direct i/o"); |
| 2468 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO; | 2476 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO; |
