]> Git Repo - J-linux.git/commitdiff
Merge tag 'zonefs-5.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal...
authorLinus Torvalds <[email protected]>
Wed, 3 Aug 2022 22:21:53 +0000 (15:21 -0700)
committerLinus Torvalds <[email protected]>
Wed, 3 Aug 2022 22:21:53 +0000 (15:21 -0700)
Pull zonefs update from Damien Le Moal:
 "A single change for this cycle to simplify handling of the memory page
  used as super block buffer during mount (from Fabio)"

* tag 'zonefs-5.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs:
  zonefs: Call page_address() on page acquired with GFP_KERNEL flag

1  2 
fs/zonefs/super.c

diff --combined fs/zonefs/super.c
index fcdc4bad95c51e8b1a636d11d97a8f9582824b45,bd4e4be97a68a1f4385604edc43ddd2547d4437b..511bb9fa3750fbb7c4a309837e5e67a0fdbc2ffc
@@@ -60,7 -60,8 +60,7 @@@ static void zonefs_account_active(struc
        }
  }
  
 -static inline int zonefs_zone_mgmt(struct inode *inode,
 -                                 enum req_opf op)
 +static inline int zonefs_zone_mgmt(struct inode *inode, enum req_op op)
  {
        struct zonefs_inode_info *zi = ZONEFS_I(inode);
        int ret;
@@@ -270,7 -271,7 +270,7 @@@ static const struct address_space_opera
        .dirty_folio            = filemap_dirty_folio,
        .release_folio          = iomap_release_folio,
        .invalidate_folio       = iomap_invalidate_folio,
 -      .migratepage            = iomap_migrate_page,
 +      .migrate_folio          = filemap_migrate_folio,
        .is_partially_uptodate  = iomap_is_partially_uptodate,
        .error_remove_page      = generic_error_remove_page,
        .direct_IO              = noop_direct_IO,
@@@ -524,7 -525,7 +524,7 @@@ static int zonefs_file_truncate(struct 
  {
        struct zonefs_inode_info *zi = ZONEFS_I(inode);
        loff_t old_isize;
 -      enum req_opf op;
 +      enum req_op op;
        int ret = 0;
  
        /*
@@@ -615,7 -616,7 +615,7 @@@ static int zonefs_inode_setattr(struct 
             !uid_eq(iattr->ia_uid, inode->i_uid)) ||
            ((iattr->ia_valid & ATTR_GID) &&
             !gid_eq(iattr->ia_gid, inode->i_gid))) {
 -              ret = dquot_transfer(inode, iattr);
 +              ret = dquot_transfer(mnt_userns, inode, iattr);
                if (ret)
                        return ret;
        }
@@@ -779,7 -780,7 +779,7 @@@ static ssize_t zonefs_file_dio_append(s
                        REQ_OP_ZONE_APPEND | REQ_SYNC | REQ_IDLE, GFP_NOFS);
        bio->bi_iter.bi_sector = zi->i_zsector;
        bio->bi_ioprio = iocb->ki_ioprio;
 -      if (iocb->ki_flags & IOCB_DSYNC)
 +      if (iocb_is_dsync(iocb))
                bio->bi_opf |= REQ_FUA;
  
        ret = bio_iov_iter_get_pages(bio, from);
@@@ -1393,7 -1394,7 +1393,7 @@@ static void zonefs_init_dir_inode(struc
  {
        struct super_block *sb = parent->i_sb;
  
 -      inode->i_ino = blkdev_nr_zones(sb->s_bdev->bd_disk) + type + 1;
 +      inode->i_ino = bdev_nr_zones(sb->s_bdev) + type + 1;
        inode_init_owner(&init_user_ns, inode, parent, S_IFDIR | 0555);
        inode->i_op = &zonefs_dir_inode_operations;
        inode->i_fop = &simple_dir_operations;
@@@ -1539,7 -1540,7 +1539,7 @@@ static int zonefs_create_zgroup(struct 
        /*
         * The first zone contains the super block: skip it.
         */
 -      end = zd->zones + blkdev_nr_zones(sb->s_bdev->bd_disk);
 +      end = zd->zones + bdev_nr_zones(sb->s_bdev);
        for (zone = &zd->zones[1]; zone < end; zone = next) {
  
                next = zone + 1;
@@@ -1634,8 -1635,8 +1634,8 @@@ static int zonefs_get_zone_info(struct 
        struct block_device *bdev = zd->sb->s_bdev;
        int ret;
  
 -      zd->zones = kvcalloc(blkdev_nr_zones(bdev->bd_disk),
 -                           sizeof(struct blk_zone), GFP_KERNEL);
 +      zd->zones = kvcalloc(bdev_nr_zones(bdev), sizeof(struct blk_zone),
 +                           GFP_KERNEL);
        if (!zd->zones)
                return -ENOMEM;
  
                return ret;
        }
  
 -      if (ret != blkdev_nr_zones(bdev->bd_disk)) {
 +      if (ret != bdev_nr_zones(bdev)) {
                zonefs_err(zd->sb, "Invalid zone report (%d/%u zones)\n",
 -                         ret, blkdev_nr_zones(bdev->bd_disk));
 +                         ret, bdev_nr_zones(bdev));
                return -EIO;
        }
  
@@@ -1686,11 -1687,11 +1686,11 @@@ static int zonefs_read_super(struct sup
        if (ret)
                goto free_page;
  
-       super = kmap(page);
+       super = page_address(page);
  
        ret = -EINVAL;
        if (le32_to_cpu(super->s_magic) != ZONEFS_MAGIC)
-               goto unmap;
+               goto free_page;
  
        stored_crc = le32_to_cpu(super->s_crc);
        super->s_crc = 0;
        if (crc != stored_crc) {
                zonefs_err(sb, "Invalid checksum (Expected 0x%08x, got 0x%08x)",
                           crc, stored_crc);
-               goto unmap;
+               goto free_page;
        }
  
        sbi->s_features = le64_to_cpu(super->s_features);
        if (sbi->s_features & ~ZONEFS_F_DEFINED_FEATURES) {
                zonefs_err(sb, "Unknown features set 0x%llx\n",
                           sbi->s_features);
-               goto unmap;
+               goto free_page;
        }
  
        if (sbi->s_features & ZONEFS_F_UID) {
                                       le32_to_cpu(super->s_uid));
                if (!uid_valid(sbi->s_uid)) {
                        zonefs_err(sb, "Invalid UID feature\n");
-                       goto unmap;
+                       goto free_page;
                }
        }
  
                                       le32_to_cpu(super->s_gid));
                if (!gid_valid(sbi->s_gid)) {
                        zonefs_err(sb, "Invalid GID feature\n");
-                       goto unmap;
+                       goto free_page;
                }
        }
  
  
        if (memchr_inv(super->s_reserved, 0, sizeof(super->s_reserved))) {
                zonefs_err(sb, "Reserved area is being used\n");
-               goto unmap;
+               goto free_page;
        }
  
        import_uuid(&sbi->s_uuid, super->s_uuid);
        ret = 0;
  
- unmap:
-       kunmap(page);
  free_page:
        __free_page(page);
  
@@@ -1815,7 -1814,8 +1813,7 @@@ static int zonefs_fill_super(struct sup
        if (ret)
                goto cleanup;
  
 -      zonefs_info(sb, "Mounting %u zones",
 -                  blkdev_nr_zones(sb->s_bdev->bd_disk));
 +      zonefs_info(sb, "Mounting %u zones", bdev_nr_zones(sb->s_bdev));
  
        if (!sbi->s_max_wro_seq_files &&
            !sbi->s_max_active_seq_files &&
        if (!inode)
                goto cleanup;
  
 -      inode->i_ino = blkdev_nr_zones(sb->s_bdev->bd_disk);
 +      inode->i_ino = bdev_nr_zones(sb->s_bdev);
        inode->i_mode = S_IFDIR | 0555;
        inode->i_ctime = inode->i_mtime = inode->i_atime = current_time(inode);
        inode->i_op = &zonefs_dir_inode_operations;
This page took 0.061534 seconds and 4 git commands to generate.