mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge branch 'master' into for-next
This commit is contained in:
commit
f1bbbb6912
3859 changed files with 293114 additions and 105562 deletions
|
|
@ -14,10 +14,10 @@
|
|||
extern const struct reiserfs_key MIN_KEY;
|
||||
|
||||
static int reiserfs_readdir(struct file *, void *, filldir_t);
|
||||
static int reiserfs_dir_fsync(struct file *filp, struct dentry *dentry,
|
||||
int datasync);
|
||||
static int reiserfs_dir_fsync(struct file *filp, int datasync);
|
||||
|
||||
const struct file_operations reiserfs_dir_operations = {
|
||||
.llseek = generic_file_llseek,
|
||||
.read = generic_read_dir,
|
||||
.readdir = reiserfs_readdir,
|
||||
.fsync = reiserfs_dir_fsync,
|
||||
|
|
@ -27,10 +27,9 @@ const struct file_operations reiserfs_dir_operations = {
|
|||
#endif
|
||||
};
|
||||
|
||||
static int reiserfs_dir_fsync(struct file *filp, struct dentry *dentry,
|
||||
int datasync)
|
||||
static int reiserfs_dir_fsync(struct file *filp, int datasync)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = filp->f_mapping->host;
|
||||
int err;
|
||||
reiserfs_write_lock(inode->i_sb);
|
||||
err = reiserfs_commit_for_inode(inode);
|
||||
|
|
|
|||
|
|
@ -134,10 +134,9 @@ static void reiserfs_vfs_truncate_file(struct inode *inode)
|
|||
* be removed...
|
||||
*/
|
||||
|
||||
static int reiserfs_sync_file(struct file *filp,
|
||||
struct dentry *dentry, int datasync)
|
||||
static int reiserfs_sync_file(struct file *filp, int datasync)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct inode *inode = filp->f_mapping->host;
|
||||
int err;
|
||||
int barrier_done;
|
||||
|
||||
|
|
@ -147,7 +146,8 @@ static int reiserfs_sync_file(struct file *filp,
|
|||
barrier_done = reiserfs_commit_for_inode(inode);
|
||||
reiserfs_write_unlock(inode->i_sb);
|
||||
if (barrier_done != 1 && reiserfs_barrier_flush(inode->i_sb))
|
||||
blkdev_issue_flush(inode->i_sb->s_bdev, NULL);
|
||||
blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL,
|
||||
BLKDEV_IFL_WAIT);
|
||||
if (barrier_done < 0)
|
||||
return barrier_done;
|
||||
return (err < 0) ? -EIO : 0;
|
||||
|
|
|
|||
|
|
@ -561,23 +561,13 @@ static int drop_new_inode(struct inode *inode)
|
|||
*/
|
||||
static int new_inode_init(struct inode *inode, struct inode *dir, int mode)
|
||||
{
|
||||
|
||||
/* the quota init calls have to know who to charge the quota to, so
|
||||
** we have to set uid and gid here
|
||||
*/
|
||||
inode->i_uid = current_fsuid();
|
||||
inode->i_mode = mode;
|
||||
/* Make inode invalid - just in case we are going to drop it before
|
||||
* the initialization happens */
|
||||
INODE_PKEY(inode)->k_objectid = 0;
|
||||
|
||||
if (dir->i_mode & S_ISGID) {
|
||||
inode->i_gid = dir->i_gid;
|
||||
if (S_ISDIR(mode))
|
||||
inode->i_mode |= S_ISGID;
|
||||
} else {
|
||||
inode->i_gid = current_fsgid();
|
||||
}
|
||||
/* the quota init calls have to know who to charge the quota to, so
|
||||
** we have to set uid and gid here
|
||||
*/
|
||||
inode_init_owner(inode, dir, mode);
|
||||
dquot_initialize(inode);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@ static int finish_unfinished(struct super_block *s)
|
|||
#ifdef CONFIG_QUOTA
|
||||
int i;
|
||||
int ms_active_set;
|
||||
int quota_enabled[MAXQUOTAS];
|
||||
#endif
|
||||
|
||||
/* compose key to look for "save" links */
|
||||
|
|
@ -179,8 +180,15 @@ static int finish_unfinished(struct super_block *s)
|
|||
}
|
||||
/* Turn on quotas so that they are updated correctly */
|
||||
for (i = 0; i < MAXQUOTAS; i++) {
|
||||
quota_enabled[i] = 1;
|
||||
if (REISERFS_SB(s)->s_qf_names[i]) {
|
||||
int ret = reiserfs_quota_on_mount(s, i);
|
||||
int ret;
|
||||
|
||||
if (sb_has_quota_active(s, i)) {
|
||||
quota_enabled[i] = 0;
|
||||
continue;
|
||||
}
|
||||
ret = reiserfs_quota_on_mount(s, i);
|
||||
if (ret < 0)
|
||||
reiserfs_warning(s, "reiserfs-2500",
|
||||
"cannot turn on journaled "
|
||||
|
|
@ -304,8 +312,8 @@ static int finish_unfinished(struct super_block *s)
|
|||
#ifdef CONFIG_QUOTA
|
||||
/* Turn quotas off */
|
||||
for (i = 0; i < MAXQUOTAS; i++) {
|
||||
if (sb_dqopt(s)->files[i])
|
||||
vfs_quota_off(s, i, 0);
|
||||
if (sb_dqopt(s)->files[i] && quota_enabled[i])
|
||||
dquot_quota_off(s, i);
|
||||
}
|
||||
if (ms_active_set)
|
||||
/* Restore the flag back */
|
||||
|
|
@ -466,6 +474,8 @@ static void reiserfs_put_super(struct super_block *s)
|
|||
struct reiserfs_transaction_handle th;
|
||||
th.t_trans_id = 0;
|
||||
|
||||
dquot_disable(s, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
|
||||
|
||||
reiserfs_write_lock(s);
|
||||
|
||||
if (s->s_dirt)
|
||||
|
|
@ -620,7 +630,7 @@ static int reiserfs_acquire_dquot(struct dquot *);
|
|||
static int reiserfs_release_dquot(struct dquot *);
|
||||
static int reiserfs_mark_dquot_dirty(struct dquot *);
|
||||
static int reiserfs_write_info(struct super_block *, int);
|
||||
static int reiserfs_quota_on(struct super_block *, int, int, char *, int);
|
||||
static int reiserfs_quota_on(struct super_block *, int, int, char *);
|
||||
|
||||
static const struct dquot_operations reiserfs_quota_operations = {
|
||||
.write_dquot = reiserfs_write_dquot,
|
||||
|
|
@ -634,12 +644,12 @@ static const struct dquot_operations reiserfs_quota_operations = {
|
|||
|
||||
static const struct quotactl_ops reiserfs_qctl_operations = {
|
||||
.quota_on = reiserfs_quota_on,
|
||||
.quota_off = vfs_quota_off,
|
||||
.quota_sync = vfs_quota_sync,
|
||||
.get_info = vfs_get_dqinfo,
|
||||
.set_info = vfs_set_dqinfo,
|
||||
.get_dqblk = vfs_get_dqblk,
|
||||
.set_dqblk = vfs_set_dqblk,
|
||||
.quota_off = dquot_quota_off,
|
||||
.quota_sync = dquot_quota_sync,
|
||||
.get_info = dquot_get_dqinfo,
|
||||
.set_info = dquot_set_dqinfo,
|
||||
.get_dqblk = dquot_get_dqblk,
|
||||
.set_dqblk = dquot_set_dqblk,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -1242,6 +1252,11 @@ static int reiserfs_remount(struct super_block *s, int *mount_flags, char *arg)
|
|||
if (s->s_flags & MS_RDONLY)
|
||||
/* it is read-only already */
|
||||
goto out_ok;
|
||||
|
||||
err = dquot_suspend(s, -1);
|
||||
if (err < 0)
|
||||
goto out_err;
|
||||
|
||||
/* try to remount file system with read-only permissions */
|
||||
if (sb_umount_state(rs) == REISERFS_VALID_FS
|
||||
|| REISERFS_SB(s)->s_mount_state != REISERFS_VALID_FS) {
|
||||
|
|
@ -1295,6 +1310,7 @@ static int reiserfs_remount(struct super_block *s, int *mount_flags, char *arg)
|
|||
s->s_dirt = 0;
|
||||
|
||||
if (!(*mount_flags & MS_RDONLY)) {
|
||||
dquot_resume(s, -1);
|
||||
finish_unfinished(s);
|
||||
reiserfs_xattr_init(s, *mount_flags);
|
||||
}
|
||||
|
|
@ -2022,15 +2038,15 @@ static int reiserfs_write_info(struct super_block *sb, int type)
|
|||
*/
|
||||
static int reiserfs_quota_on_mount(struct super_block *sb, int type)
|
||||
{
|
||||
return vfs_quota_on_mount(sb, REISERFS_SB(sb)->s_qf_names[type],
|
||||
REISERFS_SB(sb)->s_jquota_fmt, type);
|
||||
return dquot_quota_on_mount(sb, REISERFS_SB(sb)->s_qf_names[type],
|
||||
REISERFS_SB(sb)->s_jquota_fmt, type);
|
||||
}
|
||||
|
||||
/*
|
||||
* Standard function to be called on quota_on
|
||||
*/
|
||||
static int reiserfs_quota_on(struct super_block *sb, int type, int format_id,
|
||||
char *name, int remount)
|
||||
char *name)
|
||||
{
|
||||
int err;
|
||||
struct path path;
|
||||
|
|
@ -2039,9 +2055,7 @@ static int reiserfs_quota_on(struct super_block *sb, int type, int format_id,
|
|||
|
||||
if (!(REISERFS_SB(sb)->s_mount_opt & (1 << REISERFS_QUOTA)))
|
||||
return -EINVAL;
|
||||
/* No more checks needed? Path and format_id are bogus anyway... */
|
||||
if (remount)
|
||||
return vfs_quota_on(sb, type, format_id, name, 1);
|
||||
|
||||
err = kern_path(name, LOOKUP_FOLLOW, &path);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
@ -2085,7 +2099,7 @@ static int reiserfs_quota_on(struct super_block *sb, int type, int format_id,
|
|||
if (err)
|
||||
goto out;
|
||||
}
|
||||
err = vfs_quota_on_path(sb, type, format_id, &path);
|
||||
err = dquot_quota_on_path(sb, type, format_id, &path);
|
||||
out:
|
||||
path_put(&path);
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -723,11 +723,11 @@ out:
|
|||
(handler) = *(handlers)++)
|
||||
|
||||
/* This is the implementation for the xattr plugin infrastructure */
|
||||
static inline struct xattr_handler *
|
||||
find_xattr_handler_prefix(struct xattr_handler **handlers,
|
||||
static inline const struct xattr_handler *
|
||||
find_xattr_handler_prefix(const struct xattr_handler **handlers,
|
||||
const char *name)
|
||||
{
|
||||
struct xattr_handler *xah;
|
||||
const struct xattr_handler *xah;
|
||||
|
||||
if (!handlers)
|
||||
return NULL;
|
||||
|
|
@ -748,7 +748,7 @@ ssize_t
|
|||
reiserfs_getxattr(struct dentry * dentry, const char *name, void *buffer,
|
||||
size_t size)
|
||||
{
|
||||
struct xattr_handler *handler;
|
||||
const struct xattr_handler *handler;
|
||||
|
||||
handler = find_xattr_handler_prefix(dentry->d_sb->s_xattr, name);
|
||||
|
||||
|
|
@ -767,7 +767,7 @@ int
|
|||
reiserfs_setxattr(struct dentry *dentry, const char *name, const void *value,
|
||||
size_t size, int flags)
|
||||
{
|
||||
struct xattr_handler *handler;
|
||||
const struct xattr_handler *handler;
|
||||
|
||||
handler = find_xattr_handler_prefix(dentry->d_sb->s_xattr, name);
|
||||
|
||||
|
|
@ -784,7 +784,7 @@ reiserfs_setxattr(struct dentry *dentry, const char *name, const void *value,
|
|||
*/
|
||||
int reiserfs_removexattr(struct dentry *dentry, const char *name)
|
||||
{
|
||||
struct xattr_handler *handler;
|
||||
const struct xattr_handler *handler;
|
||||
handler = find_xattr_handler_prefix(dentry->d_sb->s_xattr, name);
|
||||
|
||||
if (!handler || get_inode_sd_version(dentry->d_inode) == STAT_DATA_V1)
|
||||
|
|
@ -807,7 +807,7 @@ static int listxattr_filler(void *buf, const char *name, int namelen,
|
|||
size_t size;
|
||||
if (name[0] != '.' ||
|
||||
(namelen != 1 && (name[1] != '.' || namelen != 2))) {
|
||||
struct xattr_handler *handler;
|
||||
const struct xattr_handler *handler;
|
||||
handler = find_xattr_handler_prefix(b->dentry->d_sb->s_xattr,
|
||||
name);
|
||||
if (!handler) /* Unsupported xattr name */
|
||||
|
|
@ -920,7 +920,7 @@ static int create_privroot(struct dentry *dentry) { return 0; }
|
|||
#endif
|
||||
|
||||
/* Actual operations that are exported to VFS-land */
|
||||
struct xattr_handler *reiserfs_xattr_handlers[] = {
|
||||
const struct xattr_handler *reiserfs_xattr_handlers[] = {
|
||||
#ifdef CONFIG_REISERFS_FS_XATTR
|
||||
&reiserfs_xattr_user_handler,
|
||||
&reiserfs_xattr_trusted_handler,
|
||||
|
|
|
|||
|
|
@ -500,7 +500,7 @@ static size_t posix_acl_access_list(struct dentry *dentry, char *list,
|
|||
return size;
|
||||
}
|
||||
|
||||
struct xattr_handler reiserfs_posix_acl_access_handler = {
|
||||
const struct xattr_handler reiserfs_posix_acl_access_handler = {
|
||||
.prefix = POSIX_ACL_XATTR_ACCESS,
|
||||
.flags = ACL_TYPE_ACCESS,
|
||||
.get = posix_acl_get,
|
||||
|
|
@ -520,7 +520,7 @@ static size_t posix_acl_default_list(struct dentry *dentry, char *list,
|
|||
return size;
|
||||
}
|
||||
|
||||
struct xattr_handler reiserfs_posix_acl_default_handler = {
|
||||
const struct xattr_handler reiserfs_posix_acl_default_handler = {
|
||||
.prefix = POSIX_ACL_XATTR_DEFAULT,
|
||||
.flags = ACL_TYPE_DEFAULT,
|
||||
.get = posix_acl_get,
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ void reiserfs_security_free(struct reiserfs_security_handle *sec)
|
|||
sec->value = NULL;
|
||||
}
|
||||
|
||||
struct xattr_handler reiserfs_xattr_security_handler = {
|
||||
const struct xattr_handler reiserfs_xattr_security_handler = {
|
||||
.prefix = XATTR_SECURITY_PREFIX,
|
||||
.get = security_get,
|
||||
.set = security_set,
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ static size_t trusted_list(struct dentry *dentry, char *list, size_t list_size,
|
|||
return len;
|
||||
}
|
||||
|
||||
struct xattr_handler reiserfs_xattr_trusted_handler = {
|
||||
const struct xattr_handler reiserfs_xattr_trusted_handler = {
|
||||
.prefix = XATTR_TRUSTED_PREFIX,
|
||||
.get = trusted_get,
|
||||
.set = trusted_set,
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ static size_t user_list(struct dentry *dentry, char *list, size_t list_size,
|
|||
return len;
|
||||
}
|
||||
|
||||
struct xattr_handler reiserfs_xattr_user_handler = {
|
||||
const struct xattr_handler reiserfs_xattr_user_handler = {
|
||||
.prefix = XATTR_USER_PREFIX,
|
||||
.get = user_get,
|
||||
.set = user_set,
|
||||
|
|
|
|||
Loading…
Reference in a new issue