Skip to content

Commit

Permalink
udf: Remove BKL from udf_update_inode
Browse files Browse the repository at this point in the history
udf_update_inode() does not need BKL since on-disk inode modifications are
protected by the buffer lock and reading of values of in-memory inode is
safe without any lock. In some cases we can write inconsistent inode state
to disk but in that case inode will be marked dirty and overwritten later.

Also make unnecessarily global udf_sync_inode() static.

Signed-off-by: Jan Kara <jack@suse.cz>
  • Loading branch information
Jan Kara committed Jan 6, 2011
1 parent f2a6cc1 commit 49521de
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 11 deletions.
13 changes: 3 additions & 10 deletions fs/udf/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ MODULE_LICENSE("GPL");
static mode_t udf_convert_permissions(struct fileEntry *);
static int udf_update_inode(struct inode *, int);
static void udf_fill_inode(struct inode *, struct buffer_head *);
static int udf_sync_inode(struct inode *inode);
static int udf_alloc_i_data(struct inode *inode, size_t size);
static struct buffer_head *inode_getblk(struct inode *, sector_t, int *,
sector_t *, int *);
Expand Down Expand Up @@ -79,9 +80,7 @@ void udf_evict_inode(struct inode *inode)
want_delete = 1;
inode->i_size = 0;
udf_truncate(inode);
lock_kernel();
udf_update_inode(inode, IS_SYNC(inode));
unlock_kernel();
}
invalidate_inode_buffers(inode);
end_writeback(inode);
Expand Down Expand Up @@ -1373,16 +1372,10 @@ static mode_t udf_convert_permissions(struct fileEntry *fe)

int udf_write_inode(struct inode *inode, struct writeback_control *wbc)
{
int ret;

lock_kernel();
ret = udf_update_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
unlock_kernel();

return ret;
return udf_update_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
}

int udf_sync_inode(struct inode *inode)
static int udf_sync_inode(struct inode *inode)
{
return udf_update_inode(inode, 1);
}
Expand Down
1 change: 0 additions & 1 deletion fs/udf/udfdecl.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ extern int udf_write_fi(struct inode *inode, struct fileIdentDesc *,
extern long udf_ioctl(struct file *, unsigned int, unsigned long);
/* inode.c */
extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *);
extern int udf_sync_inode(struct inode *);
extern void udf_expand_file_adinicb(struct inode *, int, int *);
extern struct buffer_head *udf_expand_dir_adinicb(struct inode *, int *, int *);
extern struct buffer_head *udf_bread(struct inode *, int, int, int *);
Expand Down

0 comments on commit 49521de

Please sign in to comment.