Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit daf342af authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'jfs-3.16' of git://github.com/kleikamp/linux-shaggy into next

Pull jfs changes from Dave Kleikamp.

* tag 'jfs-3.16' of git://github.com/kleikamp/linux-shaggy:
  fs/jfs/super.c: convert simple_str to kstr
  fs/jfs/jfs_dmap.c: replace min/casting by min_t
  fs/jfs/super.c: remove 0 assignment to static + code clean-up
  fs/jfs/jfs_logmgr.c: remove NULL assignment on static
  JFS: Check for NULL before calling posix_acl_equiv_mode()
  fs/jfs/jfs_inode.c: atomically set inode->i_flags
parents ba1bdefe bb5e50aa
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ static int __jfs_set_acl(tid_t tid, struct inode *inode, int type,
	switch (type) {
	case ACL_TYPE_ACCESS:
		ea_name = POSIX_ACL_XATTR_ACCESS;
		if (acl) {
			rc = posix_acl_equiv_mode(acl, &inode->i_mode);
			if (rc < 0)
				return rc;
@@ -90,6 +91,7 @@ static int __jfs_set_acl(tid_t tid, struct inode *inode, int type,
			mark_inode_dirty(inode);
			if (rc == 0)
				acl = NULL;
		}
		break;
	case ACL_TYPE_DEFAULT:
		ea_name = POSIX_ACL_XATTR_DEFAULT;
+5 −4
Original line number Diff line number Diff line
@@ -1208,7 +1208,7 @@ static int dbAllocNext(struct bmap * bmp, struct dmap * dp, s64 blkno,
				 * by this leaf.
				 */
				l2size =
				    min((int)leaf[word], NLSTOL2BSZ(nwords));
				    min_t(int, leaf[word], NLSTOL2BSZ(nwords));

				/* determine how many words were handled.
				 */
@@ -1902,7 +1902,7 @@ dbAllocCtl(struct bmap * bmp, s64 nblocks, int l2nb, s64 blkno, s64 * results)

		/* determine how many blocks to allocate from this dmap.
		 */
		nb = min(n, (s64)BPERDMAP);
		nb = min_t(s64, n, BPERDMAP);

		/* allocate the blocks from the dmap.
		 */
@@ -2260,7 +2260,8 @@ static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno,
				 * of bits being allocated and the l2 number
				 * of bits currently described by this leaf.
				 */
				size = min((int)leaf[word], NLSTOL2BSZ(nwords));
				size = min_t(int, leaf[word],
					     NLSTOL2BSZ(nwords));

				/* update the leaf to reflect the allocation.
				 * in addition to setting the leaf value to
@@ -3563,7 +3564,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
					if (mp == NULL)
						goto errout;

					n = min(nblocks, (s64)BPERDMAP);
					n = min_t(s64, nblocks, BPERDMAP);
				}

				dp = (struct dmap *) mp->data;
+8 −8
Original line number Diff line number Diff line
@@ -29,20 +29,20 @@
void jfs_set_inode_flags(struct inode *inode)
{
	unsigned int flags = JFS_IP(inode)->mode2;

	inode->i_flags &= ~(S_IMMUTABLE | S_APPEND |
		S_NOATIME | S_DIRSYNC | S_SYNC);
	unsigned int new_fl = 0;

	if (flags & JFS_IMMUTABLE_FL)
		inode->i_flags |= S_IMMUTABLE;
		new_fl |= S_IMMUTABLE;
	if (flags & JFS_APPEND_FL)
		inode->i_flags |= S_APPEND;
		new_fl |= S_APPEND;
	if (flags & JFS_NOATIME_FL)
		inode->i_flags |= S_NOATIME;
		new_fl |= S_NOATIME;
	if (flags & JFS_DIRSYNC_FL)
		inode->i_flags |= S_DIRSYNC;
		new_fl |= S_DIRSYNC;
	if (flags & JFS_SYNC_FL)
		inode->i_flags |= S_SYNC;
		new_fl |= S_SYNC;
	inode_set_flags(inode, new_fl, S_IMMUTABLE | S_APPEND | S_NOATIME |
			S_DIRSYNC | S_SYNC);
}

void jfs_get_inode_flags(struct jfs_inode_info *jfs_ip)
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ do { \
 * Global list of active external journals
 */
static LIST_HEAD(jfs_external_logs);
static struct jfs_log *dummy_log = NULL;
static struct jfs_log *dummy_log;
static DEFINE_MUTEX(jfs_log_mutex);

/*
+43 −34
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ static const struct export_operations jfs_export_operations;
static struct file_system_type jfs_fs_type;

#define MAX_COMMIT_THREADS 64
static int commit_threads = 0;
static int commit_threads;
module_param(commit_threads, int, 0);
MODULE_PARM_DESC(commit_threads, "Number of commit threads");

@@ -84,8 +84,7 @@ static void jfs_handle_error(struct super_block *sb)
		panic("JFS (device %s): panic forced after error\n",
			sb->s_id);
	else if (sbi->flag & JFS_ERR_REMOUNT_RO) {
		jfs_err("ERROR: (device %s): remounting filesystem "
			"as read-only\n",
		jfs_err("ERROR: (device %s): remounting filesystem as read-only\n",
			sb->s_id);
		sb->s_flags |= MS_RDONLY;
	}
@@ -273,7 +272,10 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
		case Opt_resize:
		{
			char *resize = args[0].from;
			*newLVSize = simple_strtoull(resize, &resize, 0);
			int rc = kstrtoll(resize, 0, newLVSize);

			if (rc)
				goto cleanup;
			break;
		}
		case Opt_resize_nosize:
@@ -327,7 +329,11 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
		case Opt_uid:
		{
			char *uid = args[0].from;
			uid_t val = simple_strtoul(uid, &uid, 0);
			uid_t val;
			int rc = kstrtouint(uid, 0, &val);

			if (rc)
				goto cleanup;
			sbi->uid = make_kuid(current_user_ns(), val);
			if (!uid_valid(sbi->uid))
				goto cleanup;
@@ -337,7 +343,11 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
		case Opt_gid:
		{
			char *gid = args[0].from;
			gid_t val = simple_strtoul(gid, &gid, 0);
			gid_t val;
			int rc = kstrtouint(gid, 0, &val);

			if (rc)
				goto cleanup;
			sbi->gid = make_kgid(current_user_ns(), val);
			if (!gid_valid(sbi->gid))
				goto cleanup;
@@ -347,7 +357,10 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
		case Opt_umask:
		{
			char *umask = args[0].from;
			sbi->umask = simple_strtoul(umask, &umask, 8);
			int rc = kstrtouint(umask, 8, &sbi->umask);

			if (rc)
				goto cleanup;
			if (sbi->umask & ~0777) {
				pr_err("JFS: Invalid value of umask\n");
				goto cleanup;
@@ -363,12 +376,10 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
			 * -> user has more control over the online trimming
			 */
			sbi->minblks_trim = 64;
			if (blk_queue_discard(q)) {
			if (blk_queue_discard(q))
				*flag |= JFS_DISCARD;
			} else {
				pr_err("JFS: discard option " \
					"not supported on device\n");
			}
			else
				pr_err("JFS: discard option not supported on device\n");
			break;
		}

@@ -380,20 +391,21 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
		{
			struct request_queue *q = bdev_get_queue(sb->s_bdev);
			char *minblks_trim = args[0].from;
			int rc;
			if (blk_queue_discard(q)) {
				*flag |= JFS_DISCARD;
				sbi->minblks_trim = simple_strtoull(
					minblks_trim, &minblks_trim, 0);
			} else {
				pr_err("JFS: discard option " \
					"not supported on device\n");
			}
				rc = kstrtouint(minblks_trim, 0,
						&sbi->minblks_trim);
				if (rc)
					goto cleanup;
			} else
				pr_err("JFS: discard option not supported on device\n");
			break;
		}

		default:
			printk("jfs: Unrecognized mount option \"%s\" "
					" or missing value\n", p);
			printk("jfs: Unrecognized mount option \"%s\" or missing value\n",
			       p);
			goto cleanup;
		}
	}
@@ -419,14 +431,12 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
	int ret;

	sync_filesystem(sb);
	if (!parse_options(data, sb, &newLVSize, &flag)) {
	if (!parse_options(data, sb, &newLVSize, &flag))
		return -EINVAL;
	}

	if (newLVSize) {
		if (sb->s_flags & MS_RDONLY) {
			pr_err("JFS: resize requires volume" \
				" to be mounted read-write\n");
			pr_err("JFS: resize requires volume to be mounted read-write\n");
			return -EROFS;
		}
		rc = jfs_extendfs(sb, newLVSize, 0);
@@ -452,9 +462,8 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data)
	}
	if ((!(sb->s_flags & MS_RDONLY)) && (*flags & MS_RDONLY)) {
		rc = dquot_suspend(sb, -1);
		if (rc < 0) {
		if (rc < 0)
			return rc;
		}
		rc = jfs_umount_rw(sb);
		JFS_SBI(sb)->flag = flag;
		return rc;
@@ -548,9 +557,8 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)

	rc = jfs_mount(sb);
	if (rc) {
		if (!silent) {
		if (!silent)
			jfs_err("jfs_mount failed w/return code = %d", rc);
		}
		goto out_mount_failed;
	}
	if (sb->s_flags & MS_RDONLY)
@@ -587,7 +595,8 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
	 * Page cache is indexed by long.
	 * I would use MAX_LFS_FILESIZE, but it's only half as big
	 */
	sb->s_maxbytes = min(((u64) PAGE_CACHE_SIZE << 32) - 1, (u64)sb->s_maxbytes);
	sb->s_maxbytes = min(((u64) PAGE_CACHE_SIZE << 32) - 1,
			     (u64)sb->s_maxbytes);
#endif
	sb->s_time_gran = 1;
	return 0;
@@ -597,9 +606,8 @@ out_no_root:

out_no_rw:
	rc = jfs_umount(sb);
	if (rc) {
	if (rc)
		jfs_err("jfs_umount failed with return code %d", rc);
	}
out_mount_failed:
	filemap_write_and_wait(sbi->direct_inode->i_mapping);
	truncate_inode_pages(sbi->direct_inode->i_mapping, 0);
@@ -924,7 +932,8 @@ static int __init init_jfs_fs(void)
		commit_threads = MAX_COMMIT_THREADS;

	for (i = 0; i < commit_threads; i++) {
		jfsCommitThread[i] = kthread_run(jfs_lazycommit, NULL, "jfsCommit");
		jfsCommitThread[i] = kthread_run(jfs_lazycommit, NULL,
						 "jfsCommit");
		if (IS_ERR(jfsCommitThread[i])) {
			rc = PTR_ERR(jfsCommitThread[i]);
			jfs_err("init_jfs_fs: fork failed w/rc = %d", rc);