drm/i915: Only print "nothing to do" debug message as required.
[safe/jmp/linux-2.6] / fs / nilfs2 / cpfile.c
index 3f5d5d0..1873781 100644 (file)
@@ -328,19 +328,24 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
                        tnicps += nicps;
                        nilfs_mdt_mark_buffer_dirty(cp_bh);
                        nilfs_mdt_mark_dirty(cpfile);
-                       if (!nilfs_cpfile_is_in_first(cpfile, cno) &&
-                           (count = nilfs_cpfile_block_sub_valid_checkpoints(
-                                   cpfile, cp_bh, kaddr, nicps)) == 0) {
-                               /* make hole */
-                               kunmap_atomic(kaddr, KM_USER0);
-                               brelse(cp_bh);
-                               ret = nilfs_cpfile_delete_checkpoint_block(
-                                       cpfile, cno);
-                               if (ret == 0)
-                                       continue;
-                               printk(KERN_ERR "%s: cannot delete block\n",
-                                      __func__);
-                               break;
+                       if (!nilfs_cpfile_is_in_first(cpfile, cno)) {
+                               count =
+                                 nilfs_cpfile_block_sub_valid_checkpoints(
+                                               cpfile, cp_bh, kaddr, nicps);
+                               if (count == 0) {
+                                       /* make hole */
+                                       kunmap_atomic(kaddr, KM_USER0);
+                                       brelse(cp_bh);
+                                       ret =
+                                         nilfs_cpfile_delete_checkpoint_block(
+                                                                  cpfile, cno);
+                                       if (ret == 0)
+                                               continue;
+                                       printk(KERN_ERR
+                                              "%s: cannot delete block\n",
+                                              __func__);
+                                       break;
+                               }
                        }
                }
 
@@ -926,3 +931,29 @@ int nilfs_cpfile_get_stat(struct inode *cpfile, struct nilfs_cpstat *cpstat)
        up_read(&NILFS_MDT(cpfile)->mi_sem);
        return ret;
 }
+
+/**
+ * nilfs_cpfile_read - read cpfile inode
+ * @cpfile: cpfile inode
+ * @raw_inode: on-disk cpfile inode
+ */
+int nilfs_cpfile_read(struct inode *cpfile, struct nilfs_inode *raw_inode)
+{
+       return nilfs_read_inode_common(cpfile, raw_inode);
+}
+
+/**
+ * nilfs_cpfile_new - create cpfile
+ * @nilfs: nilfs object
+ * @cpsize: size of a checkpoint entry
+ */
+struct inode *nilfs_cpfile_new(struct the_nilfs *nilfs, size_t cpsize)
+{
+       struct inode *cpfile;
+
+       cpfile = nilfs_mdt_new(nilfs, NULL, NILFS_CPFILE_INO, 0);
+       if (cpfile)
+               nilfs_mdt_set_entry_size(cpfile, cpsize,
+                                        sizeof(struct nilfs_cpfile_header));
+       return cpfile;
+}