Merge tag 'xfs-for-linus-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs
Pull xfs updates from Dave Chinner: "A pretty average collection of fixes, cleanups and improvements in this request. Summary: - fixes for mount line parsing, sparse warnings, read-only compat feature remount behaviour - allow fast path symlink lookups for inline symlinks. - attribute listing cleanups - writeback goes direct to bios rather than indirecting through bufferheads - transaction allocation cleanup - optimised kmem_realloc - added configurable error handling for metadata write errors, changed default error handling behaviour from "retry forever" to "retry until unmount then fail" - fixed several inode cluster writeback lookup vs reclaim race conditions - fixed inode cluster writeback checking wrong inode after lookup - fixed bugs where struct xfs_inode freeing wasn't actually RCU safe - cleaned up inode reclaim tagging" * tag 'xfs-for-linus-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (39 commits) xfs: fix warning in xfs_finish_page_writeback for non-debug builds xfs: move reclaim tagging functions xfs: simplify inode reclaim tagging interfaces xfs: rename variables in xfs_iflush_cluster for clarity xfs: xfs_iflush_cluster has range issues xfs: mark reclaimed inodes invalid earlier xfs: xfs_inode_free() isn't RCU safe xfs: optimise xfs_iext_destroy xfs: skip stale inodes in xfs_iflush_cluster xfs: fix inode validity check in xfs_iflush_cluster xfs: xfs_iflush_cluster fails to abort on error xfs: remove xfs_fs_evict_inode() xfs: add "fail at unmount" error handling configuration xfs: add configuration handlers for specific errors xfs: add configuration of error failure speed xfs: introduce table-based init for error behaviors xfs: add configurable error support to metadata buffers xfs: introduce metadata IO error class xfs: configurable error behavior via sysfs xfs: buffer ->bi_end_io function requires irq-safe lock ...
This commit is contained in:
@@ -146,7 +146,7 @@ __xfs_xattr_put_listent(
|
||||
arraytop = context->count + prefix_len + namelen + 1;
|
||||
if (arraytop > context->firstu) {
|
||||
context->count = -1; /* insufficient space */
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
offset = (char *)context->alist + context->count;
|
||||
strncpy(offset, prefix, prefix_len);
|
||||
@@ -166,8 +166,7 @@ xfs_xattr_put_listent(
|
||||
int flags,
|
||||
unsigned char *name,
|
||||
int namelen,
|
||||
int valuelen,
|
||||
unsigned char *value)
|
||||
int valuelen)
|
||||
{
|
||||
char *prefix;
|
||||
int prefix_len;
|
||||
@@ -221,11 +220,15 @@ xfs_xattr_put_listent(
|
||||
}
|
||||
|
||||
ssize_t
|
||||
xfs_vn_listxattr(struct dentry *dentry, char *data, size_t size)
|
||||
xfs_vn_listxattr(
|
||||
struct dentry *dentry,
|
||||
char *data,
|
||||
size_t size)
|
||||
{
|
||||
struct xfs_attr_list_context context;
|
||||
struct attrlist_cursor_kern cursor = { 0 };
|
||||
struct inode *inode = d_inode(dentry);
|
||||
struct inode *inode = d_inode(dentry);
|
||||
int error;
|
||||
|
||||
/*
|
||||
* First read the regular on-disk attributes.
|
||||
@@ -239,7 +242,9 @@ xfs_vn_listxattr(struct dentry *dentry, char *data, size_t size)
|
||||
context.firstu = context.bufsize;
|
||||
context.put_listent = xfs_xattr_put_listent;
|
||||
|
||||
xfs_attr_list_int(&context);
|
||||
error = xfs_attr_list_int(&context);
|
||||
if (error)
|
||||
return error;
|
||||
if (context.count < 0)
|
||||
return -ERANGE;
|
||||
|
||||
|
Reference in New Issue
Block a user