Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 320989
b: refs/heads/master
c: fef6925
h: refs/heads/master
i:
  320987: 4eb3278
v: v3
  • Loading branch information
Jan Kara authored and Al Viro committed Jul 31, 2012
1 parent 2b289fb commit 71f7324
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 6 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: d9457dc056249913a7abe8b71dc09e427e590e35
refs/heads/master: fef6925cd4c6b564ecff477e07a0fca987542223
11 changes: 9 additions & 2 deletions trunk/fs/ocfs2/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1971,6 +1971,7 @@ int ocfs2_change_file_space(struct file *file, unsigned int cmd,
{
struct inode *inode = file->f_path.dentry->d_inode;
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
int ret;

if ((cmd == OCFS2_IOC_RESVSP || cmd == OCFS2_IOC_RESVSP64) &&
!ocfs2_writes_unwritten_extents(osb))
Expand All @@ -1985,7 +1986,12 @@ int ocfs2_change_file_space(struct file *file, unsigned int cmd,
if (!(file->f_mode & FMODE_WRITE))
return -EBADF;

return __ocfs2_change_file_space(file, inode, file->f_pos, cmd, sr, 0);
ret = mnt_want_write_file(file);
if (ret)
return ret;
ret = __ocfs2_change_file_space(file, inode, file->f_pos, cmd, sr, 0);
mnt_drop_write_file(file);
return ret;
}

static long ocfs2_fallocate(struct file *file, int mode, loff_t offset,
Expand Down Expand Up @@ -2261,7 +2267,7 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
if (iocb->ki_left == 0)
return 0;

vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE);
sb_start_write(inode->i_sb);

appending = file->f_flags & O_APPEND ? 1 : 0;
direct_io = file->f_flags & O_DIRECT ? 1 : 0;
Expand Down Expand Up @@ -2436,6 +2442,7 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
ocfs2_iocb_clear_sem_locked(iocb);

mutex_unlock(&inode->i_mutex);
sb_end_write(inode->i_sb);

if (written)
ret = written;
Expand Down
14 changes: 12 additions & 2 deletions trunk/fs/ocfs2/ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,12 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
if (get_user(new_clusters, (int __user *)arg))
return -EFAULT;

return ocfs2_group_extend(inode, new_clusters);
status = mnt_want_write_file(filp);
if (status)
return status;
status = ocfs2_group_extend(inode, new_clusters);
mnt_drop_write_file(filp);
return status;
case OCFS2_IOC_GROUP_ADD:
case OCFS2_IOC_GROUP_ADD64:
if (!capable(CAP_SYS_RESOURCE))
Expand All @@ -937,7 +942,12 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
if (copy_from_user(&input, (int __user *) arg, sizeof(input)))
return -EFAULT;

return ocfs2_group_add(inode, &input);
status = mnt_want_write_file(filp);
if (status)
return status;
status = ocfs2_group_add(inode, &input);
mnt_drop_write_file(filp);
return status;
case OCFS2_IOC_REFLINK:
if (copy_from_user(&args, argp, sizeof(args)))
return -EFAULT;
Expand Down
7 changes: 6 additions & 1 deletion trunk/fs/ocfs2/journal.c
Original file line number Diff line number Diff line change
Expand Up @@ -355,11 +355,14 @@ handle_t *ocfs2_start_trans(struct ocfs2_super *osb, int max_buffs)
if (journal_current_handle())
return jbd2_journal_start(journal, max_buffs);

sb_start_intwrite(osb->sb);

down_read(&osb->journal->j_trans_barrier);

handle = jbd2_journal_start(journal, max_buffs);
if (IS_ERR(handle)) {
up_read(&osb->journal->j_trans_barrier);
sb_end_intwrite(osb->sb);

mlog_errno(PTR_ERR(handle));

Expand Down Expand Up @@ -388,8 +391,10 @@ int ocfs2_commit_trans(struct ocfs2_super *osb,
if (ret < 0)
mlog_errno(ret);

if (!nested)
if (!nested) {
up_read(&journal->j_trans_barrier);
sb_end_intwrite(osb->sb);
}

return ret;
}
Expand Down
2 changes: 2 additions & 0 deletions trunk/fs/ocfs2/mmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ static int ocfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
sigset_t oldset;
int ret;

sb_start_pagefault(inode->i_sb);
ocfs2_block_signals(&oldset);

/*
Expand Down Expand Up @@ -165,6 +166,7 @@ static int ocfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)

out:
ocfs2_unblock_signals(&oldset);
sb_end_pagefault(inode->i_sb);
return ret;
}

Expand Down

0 comments on commit 71f7324

Please sign in to comment.