tools/testing/nvdimm: replace CONFIG_DMA_CMA dependency with vmalloc()
[cascardo/linux.git] / fs / nilfs2 / inode.c
index 5346313..a0ebdb1 100644 (file)
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Written by Ryusuke Konishi <ryusuke@osrg.net>
+ * Written by Ryusuke Konishi.
  *
  */
 
@@ -87,7 +83,7 @@ int nilfs_get_block(struct inode *inode, sector_t blkoff,
        struct the_nilfs *nilfs = inode->i_sb->s_fs_info;
        __u64 blknum = 0;
        int err = 0, ret;
-       unsigned maxblocks = bh_result->b_size >> inode->i_blkbits;
+       unsigned int maxblocks = bh_result->b_size >> inode->i_blkbits;
 
        down_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
        ret = nilfs_bmap_lookup_contig(ii->i_bmap, blkoff, &blknum, maxblocks);
@@ -133,11 +129,14 @@ int nilfs_get_block(struct inode *inode, sector_t blkoff,
                /* Error handling should be detailed */
                set_buffer_new(bh_result);
                set_buffer_delay(bh_result);
-               map_bh(bh_result, inode->i_sb, 0); /* dbn must be changed
-                                                     to proper value */
+               map_bh(bh_result, inode->i_sb, 0);
+               /* Disk block number must be changed to proper value */
+
        } else if (ret == -ENOENT) {
-               /* not found is not error (e.g. hole); must return without
-                  the mapped state flag. */
+               /*
+                * not found is not error (e.g. hole); must return without
+                * the mapped state flag.
+                */
                ;
        } else {
                err = ret;
@@ -167,7 +166,7 @@ static int nilfs_readpage(struct file *file, struct page *page)
  * @nr_pages - number of pages to be read
  */
 static int nilfs_readpages(struct file *file, struct address_space *mapping,
-                          struct list_head *pages, unsigned nr_pages)
+                          struct list_head *pages, unsigned int nr_pages)
 {
        return mpage_readpages(mapping, pages, nr_pages, nilfs_get_block);
 }
@@ -226,7 +225,7 @@ static int nilfs_set_page_dirty(struct page *page)
        int ret = __set_page_dirty_nobuffers(page);
 
        if (page_has_buffers(page)) {
-               unsigned nr_dirty = 0;
+               unsigned int nr_dirty = 0;
                struct buffer_head *bh, *head;
 
                /*
@@ -249,7 +248,7 @@ static int nilfs_set_page_dirty(struct page *page)
                if (nr_dirty)
                        nilfs_set_file_dirty(inode, nr_dirty);
        } else if (ret) {
-               unsigned nr_dirty = 1 << (PAGE_SHIFT - inode->i_blkbits);
+               unsigned int nr_dirty = 1 << (PAGE_SHIFT - inode->i_blkbits);
 
                nilfs_set_file_dirty(inode, nr_dirty);
        }
@@ -291,8 +290,8 @@ static int nilfs_write_end(struct file *file, struct address_space *mapping,
                           struct page *page, void *fsdata)
 {
        struct inode *inode = mapping->host;
-       unsigned start = pos & (PAGE_SIZE - 1);
-       unsigned nr_dirty;
+       unsigned int start = pos & (PAGE_SIZE - 1);
+       unsigned int nr_dirty;
        int err;
 
        nr_dirty = nilfs_page_count_clean_buffers(page, start,
@@ -305,7 +304,7 @@ static int nilfs_write_end(struct file *file, struct address_space *mapping,
 }
 
 static ssize_t
-nilfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset)
+nilfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
 {
        struct inode *inode = file_inode(iocb->ki_filp);
 
@@ -313,7 +312,7 @@ nilfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset)
                return 0;
 
        /* Needs synchronization with the cleaner */
-       return blockdev_direct_IO(iocb, inode, iter, offset, nilfs_get_block);
+       return blockdev_direct_IO(iocb, inode, iter, nilfs_get_block);
 }
 
 const struct address_space_operations nilfs_aops = {
@@ -399,23 +398,26 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
 
        err = nilfs_init_acl(inode, dir);
        if (unlikely(err))
-               goto failed_after_creation; /* never occur. When supporting
-                                   nilfs_init_acl(), proper cancellation of
-                                   above jobs should be considered */
+               /*
+                * Never occur.  When supporting nilfs_init_acl(),
+                * proper cancellation of above jobs should be considered.
+                */
+               goto failed_after_creation;
 
        return inode;
 
  failed_after_creation:
        clear_nlink(inode);
        unlock_new_inode(inode);
-       iput(inode);  /* raw_inode will be deleted through
-                        nilfs_evict_inode() */
+       iput(inode);  /*
+                      * raw_inode will be deleted through
+                      * nilfs_evict_inode().
+                      */
        goto failed;
 
  failed_ifile_create_inode:
        make_bad_inode(inode);
-       iput(inode);  /* if i_nlink == 1, generic_forget_inode() will be
-                        called */
+       iput(inode);
  failed:
        return ERR_PTR(err);
 }
@@ -666,8 +668,10 @@ void nilfs_write_inode_common(struct inode *inode,
        else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
                raw_inode->i_device_code =
                        cpu_to_le64(huge_encode_dev(inode->i_rdev));
-       /* When extending inode, nilfs->ns_inode_size should be checked
-          for substitutions of appended fields */
+       /*
+        * When extending inode, nilfs->ns_inode_size should be checked
+        * for substitutions of appended fields.
+        */
 }
 
 void nilfs_update_inode(struct inode *inode, struct buffer_head *ibh, int flags)
@@ -685,9 +689,12 @@ void nilfs_update_inode(struct inode *inode, struct buffer_head *ibh, int flags)
                set_bit(NILFS_I_INODE_SYNC, &ii->i_state);
 
        nilfs_write_inode_common(inode, raw_inode, 0);
-               /* XXX: call with has_bmap = 0 is a workaround to avoid
-                  deadlock of bmap. This delays update of i_bmap to just
-                  before writing */
+               /*
+                * XXX: call with has_bmap = 0 is a workaround to avoid
+                * deadlock of bmap.  This delays update of i_bmap to just
+                * before writing.
+                */
+
        nilfs_ifile_unmap_inode(ifile, ino, ibh);
 }
 
@@ -752,14 +759,15 @@ void nilfs_truncate(struct inode *inode)
        nilfs_mark_inode_dirty(inode);
        nilfs_set_file_dirty(inode, 0);
        nilfs_transaction_commit(sb);
-       /* May construct a logical segment and may fail in sync mode.
-          But truncate has no return value. */
+       /*
+        * May construct a logical segment and may fail in sync mode.
+        * But truncate has no return value.
+        */
 }
 
 static void nilfs_clear_inode(struct inode *inode)
 {
        struct nilfs_inode_info *ii = NILFS_I(inode);
-       struct nilfs_mdt_info *mdi = NILFS_MDT(inode);
 
        /*
         * Free resources allocated in nilfs_read_inode(), here.
@@ -768,8 +776,8 @@ static void nilfs_clear_inode(struct inode *inode)
        brelse(ii->i_bh);
        ii->i_bh = NULL;
 
-       if (mdi && mdi->mi_palloc_cache)
-               nilfs_palloc_destroy_cache(inode);
+       if (nilfs_is_metadata_file_inode(inode))
+               nilfs_mdt_clear(inode);
 
        if (test_bit(NILFS_I_BMAP, &ii->i_state))
                nilfs_bmap_clear(ii->i_bmap);
@@ -811,8 +819,10 @@ void nilfs_evict_inode(struct inode *inode)
        if (IS_SYNC(inode))
                nilfs_set_transaction_flag(NILFS_TI_SYNC);
        nilfs_transaction_commit(sb);
-       /* May construct a logical segment and may fail in sync mode.
-          But delete_inode has no return value. */
+       /*
+        * May construct a logical segment and may fail in sync mode.
+        * But delete_inode has no return value.
+        */
 }
 
 int nilfs_setattr(struct dentry *dentry, struct iattr *iattr)
@@ -856,6 +866,7 @@ out_err:
 int nilfs_permission(struct inode *inode, int mask)
 {
        struct nilfs_root *root = NILFS_I(inode)->i_root;
+
        if ((mask & MAY_WRITE) && root &&
            root->cno != NILFS_CPTREE_CURRENT_CNO)
                return -EROFS; /* snapshot is not writable */
@@ -906,7 +917,7 @@ int nilfs_inode_dirty(struct inode *inode)
        return ret;
 }
 
-int nilfs_set_file_dirty(struct inode *inode, unsigned nr_dirty)
+int nilfs_set_file_dirty(struct inode *inode, unsigned int nr_dirty)
 {
        struct nilfs_inode_info *ii = NILFS_I(inode);
        struct the_nilfs *nilfs = inode->i_sb->s_fs_info;
@@ -919,17 +930,23 @@ int nilfs_set_file_dirty(struct inode *inode, unsigned nr_dirty)
        spin_lock(&nilfs->ns_inode_lock);
        if (!test_bit(NILFS_I_QUEUED, &ii->i_state) &&
            !test_bit(NILFS_I_BUSY, &ii->i_state)) {
-               /* Because this routine may race with nilfs_dispose_list(),
-                  we have to check NILFS_I_QUEUED here, too. */
+               /*
+                * Because this routine may race with nilfs_dispose_list(),
+                * we have to check NILFS_I_QUEUED here, too.
+                */
                if (list_empty(&ii->i_dirty) && igrab(inode) == NULL) {
-                       /* This will happen when somebody is freeing
-                          this inode. */
+                       /*
+                        * This will happen when somebody is freeing
+                        * this inode.
+                        */
                        nilfs_warning(inode->i_sb, __func__,
-                                     "cannot get inode (ino=%lu)\n",
+                                     "cannot get inode (ino=%lu)",
                                      inode->i_ino);
                        spin_unlock(&nilfs->ns_inode_lock);
-                       return -EINVAL; /* NILFS_I_DIRTY may remain for
-                                          freeing inode */
+                       return -EINVAL; /*
+                                        * NILFS_I_DIRTY may remain for
+                                        * freeing inode.
+                                        */
                }
                list_move_tail(&ii->i_dirty, &nilfs->ns_dirty_files);
                set_bit(NILFS_I_QUEUED, &ii->i_state);
@@ -946,7 +963,7 @@ int __nilfs_mark_inode_dirty(struct inode *inode, int flags)
        err = nilfs_load_inode_block(inode, &ibh);
        if (unlikely(err)) {
                nilfs_warning(inode->i_sb, __func__,
-                             "failed to reget inode block.\n");
+                             "failed to reget inode block.");
                return err;
        }
        nilfs_update_inode(inode, ibh, flags);
@@ -973,7 +990,7 @@ void nilfs_dirty_inode(struct inode *inode, int flags)
 
        if (is_bad_inode(inode)) {
                nilfs_warning(inode->i_sb, __func__,
-                             "tried to mark bad_inode dirty. ignored.\n");
+                             "tried to mark bad_inode dirty. ignored.");
                dump_stack();
                return;
        }