Commit d54ff732 authored by Steve French's avatar Steve French

[CIFS] Fix lease break for writes

On lease break we were breaking to readonly leases always
even if write requested.  Also removed experimental
ifdef around setlease code
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 9bf67e51
...@@ -645,7 +645,6 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin) ...@@ -645,7 +645,6 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin)
return generic_file_llseek_unlocked(file, offset, origin); return generic_file_llseek_unlocked(file, offset, origin);
} }
#ifdef CONFIG_CIFS_EXPERIMENTAL
static int cifs_setlease(struct file *file, long arg, struct file_lock **lease) static int cifs_setlease(struct file *file, long arg, struct file_lock **lease)
{ {
/* note that this is called by vfs setlease with the BKL held /* note that this is called by vfs setlease with the BKL held
...@@ -674,7 +673,6 @@ static int cifs_setlease(struct file *file, long arg, struct file_lock **lease) ...@@ -674,7 +673,6 @@ static int cifs_setlease(struct file *file, long arg, struct file_lock **lease)
else else
return -EAGAIN; return -EAGAIN;
} }
#endif
struct file_system_type cifs_fs_type = { struct file_system_type cifs_fs_type = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -751,10 +749,7 @@ const struct file_operations cifs_file_ops = { ...@@ -751,10 +749,7 @@ const struct file_operations cifs_file_ops = {
#ifdef CONFIG_CIFS_POSIX #ifdef CONFIG_CIFS_POSIX
.unlocked_ioctl = cifs_ioctl, .unlocked_ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */ #endif /* CONFIG_CIFS_POSIX */
#ifdef CONFIG_CIFS_EXPERIMENTAL
.setlease = cifs_setlease, .setlease = cifs_setlease,
#endif /* CONFIG_CIFS_EXPERIMENTAL */
}; };
const struct file_operations cifs_file_direct_ops = { const struct file_operations cifs_file_direct_ops = {
...@@ -773,9 +768,7 @@ const struct file_operations cifs_file_direct_ops = { ...@@ -773,9 +768,7 @@ const struct file_operations cifs_file_direct_ops = {
.unlocked_ioctl = cifs_ioctl, .unlocked_ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */ #endif /* CONFIG_CIFS_POSIX */
.llseek = cifs_llseek, .llseek = cifs_llseek,
#ifdef CONFIG_CIFS_EXPERIMENTAL
.setlease = cifs_setlease, .setlease = cifs_setlease,
#endif /* CONFIG_CIFS_EXPERIMENTAL */
}; };
const struct file_operations cifs_file_nobrl_ops = { const struct file_operations cifs_file_nobrl_ops = {
.read = do_sync_read, .read = do_sync_read,
...@@ -792,10 +785,7 @@ const struct file_operations cifs_file_nobrl_ops = { ...@@ -792,10 +785,7 @@ const struct file_operations cifs_file_nobrl_ops = {
#ifdef CONFIG_CIFS_POSIX #ifdef CONFIG_CIFS_POSIX
.unlocked_ioctl = cifs_ioctl, .unlocked_ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */ #endif /* CONFIG_CIFS_POSIX */
#ifdef CONFIG_CIFS_EXPERIMENTAL
.setlease = cifs_setlease, .setlease = cifs_setlease,
#endif /* CONFIG_CIFS_EXPERIMENTAL */
}; };
const struct file_operations cifs_file_direct_nobrl_ops = { const struct file_operations cifs_file_direct_nobrl_ops = {
...@@ -813,9 +803,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = { ...@@ -813,9 +803,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = {
.unlocked_ioctl = cifs_ioctl, .unlocked_ioctl = cifs_ioctl,
#endif /* CONFIG_CIFS_POSIX */ #endif /* CONFIG_CIFS_POSIX */
.llseek = cifs_llseek, .llseek = cifs_llseek,
#ifdef CONFIG_CIFS_EXPERIMENTAL
.setlease = cifs_setlease, .setlease = cifs_setlease,
#endif /* CONFIG_CIFS_EXPERIMENTAL */
}; };
const struct file_operations cifs_dir_ops = { const struct file_operations cifs_dir_ops = {
......
...@@ -114,5 +114,5 @@ extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg); ...@@ -114,5 +114,5 @@ extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
extern const struct export_operations cifs_export_ops; extern const struct export_operations cifs_export_ops;
#endif /* EXPERIMENTAL */ #endif /* EXPERIMENTAL */
#define CIFS_VERSION "1.63" #define CIFS_VERSION "1.64"
#endif /* _CIFSFS_H */ #endif /* _CIFSFS_H */
...@@ -2306,12 +2306,10 @@ cifs_oplock_break(struct slow_work *work) ...@@ -2306,12 +2306,10 @@ cifs_oplock_break(struct slow_work *work)
int rc, waitrc = 0; int rc, waitrc = 0;
if (inode && S_ISREG(inode->i_mode)) { if (inode && S_ISREG(inode->i_mode)) {
#ifdef CONFIG_CIFS_EXPERIMENTAL if (cinode->clientCanCacheRead)
if (cinode->clientCanCacheAll == 0)
break_lease(inode, O_RDONLY); break_lease(inode, O_RDONLY);
else if (cinode->clientCanCacheRead == 0) else
break_lease(inode, O_WRONLY); break_lease(inode, O_WRONLY);
#endif
rc = filemap_fdatawrite(inode->i_mapping); rc = filemap_fdatawrite(inode->i_mapping);
if (cinode->clientCanCacheRead == 0) { if (cinode->clientCanCacheRead == 0) {
waitrc = filemap_fdatawait(inode->i_mapping); waitrc = filemap_fdatawait(inode->i_mapping);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment