Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 339463
b: refs/heads/master
c: 9ec3c88
h: refs/heads/master
i:
  339461: c230c75
  339459: d78b6ff
  339455: 05e8cd9
v: v3
  • Loading branch information
Pavel Shilovsky authored and Steve French committed Dec 5, 2012
1 parent 04ec7d1 commit b13c7fb
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6d3ea7e4975aed451fbee4dea2fef63b0de8cb4f
refs/heads/master: 9ec3c882879d3777914d34c0143c7d5b87dbb5ea
32 changes: 19 additions & 13 deletions trunk/fs/cifs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1041,9 +1041,8 @@ struct lock_to_push {
};

static int
cifs_push_posix_locks(struct cifsFileInfo *cfile)
cifs_push_posix_locks_locked(struct cifsFileInfo *cfile)
{
struct cifsInodeInfo *cinode = CIFS_I(cfile->dentry->d_inode);
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
struct file_lock *flock, **before;
unsigned int count = 0, i = 0;
Expand All @@ -1054,14 +1053,6 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)

xid = get_xid();

/* we are going to update can_cache_brlcks here - need a write access */
down_write(&cinode->lock_sem);
if (!cinode->can_cache_brlcks) {
up_write(&cinode->lock_sem);
free_xid(xid);
return rc;
}

lock_flocks();
cifs_for_each_lock(cfile->dentry->d_inode, before) {
if ((*before)->fl_flags & FL_POSIX)
Expand Down Expand Up @@ -1127,9 +1118,6 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
}

out:
cinode->can_cache_brlcks = false;
up_write(&cinode->lock_sem);

free_xid(xid);
return rc;
err_out:
Expand All @@ -1140,6 +1128,24 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
goto out;
}

static int
cifs_push_posix_locks(struct cifsFileInfo *cfile)
{
struct cifsInodeInfo *cinode = CIFS_I(cfile->dentry->d_inode);
int rc = 0;

/* we are going to update can_cache_brlcks here - need a write access */
down_write(&cinode->lock_sem);
if (!cinode->can_cache_brlcks) {
up_write(&cinode->lock_sem);
return rc;
}
rc = cifs_push_posix_locks_locked(cfile);
cinode->can_cache_brlcks = false;
up_write(&cinode->lock_sem);
return rc;
}

static int
cifs_push_locks(struct cifsFileInfo *cfile)
{
Expand Down

0 comments on commit b13c7fb

Please sign in to comment.