Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 142632
b: refs/heads/master
c: 76068c4
h: refs/heads/master
v: v3
  • Loading branch information
Ryusuke Konishi authored and Linus Torvalds committed Apr 7, 2009
1 parent 2817592 commit 8a253c2
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8acfbf0939e98cc77dab94c24899c9930ddd1e13
refs/heads/master: 76068c4ff1cc03d9d24d17fd9e6a1475bc2f6730
11 changes: 7 additions & 4 deletions trunk/fs/nilfs2/cpfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -382,13 +382,13 @@ static void nilfs_cpfile_checkpoint_to_cpinfo(struct inode *cpfile,
ci->ci_next = le64_to_cpu(cp->cp_snapshot_list.ssl_next);
}

static ssize_t nilfs_cpfile_do_get_cpinfo(struct inode *cpfile, __u64 cno,
static ssize_t nilfs_cpfile_do_get_cpinfo(struct inode *cpfile, __u64 *cnop,
struct nilfs_cpinfo *ci, size_t nci)
{
struct nilfs_checkpoint *cp;
struct buffer_head *bh;
size_t cpsz = NILFS_MDT(cpfile)->mi_entry_size;
__u64 cur_cno = nilfs_mdt_cno(cpfile);
__u64 cur_cno = nilfs_mdt_cno(cpfile), cno = *cnop;
void *kaddr;
int n, ret;
int ncps, i;
Expand Down Expand Up @@ -416,6 +416,8 @@ static ssize_t nilfs_cpfile_do_get_cpinfo(struct inode *cpfile, __u64 cno,
}

ret = n;
if (n > 0)
*cnop = ci[n - 1].ci_cno + 1;

out:
up_read(&NILFS_MDT(cpfile)->mi_sem);
Expand Down Expand Up @@ -510,7 +512,7 @@ ssize_t nilfs_cpfile_get_cpinfo(struct inode *cpfile, __u64 *cnop, int mode,
{
switch (mode) {
case NILFS_CHECKPOINT:
return nilfs_cpfile_do_get_cpinfo(cpfile, *cnop, ci, nci);
return nilfs_cpfile_do_get_cpinfo(cpfile, cnop, ci, nci);
case NILFS_SNAPSHOT:
return nilfs_cpfile_do_get_ssinfo(cpfile, cnop, ci, nci);
default:
Expand All @@ -526,13 +528,14 @@ ssize_t nilfs_cpfile_get_cpinfo(struct inode *cpfile, __u64 *cnop, int mode,
int nilfs_cpfile_delete_checkpoint(struct inode *cpfile, __u64 cno)
{
struct nilfs_cpinfo ci;
__u64 tcno = cno;
ssize_t nci;
int ret;

/* checkpoint number 0 is invalid */
if (cno == 0)
return -ENOENT;
nci = nilfs_cpfile_do_get_cpinfo(cpfile, cno, &ci, 1);
nci = nilfs_cpfile_do_get_cpinfo(cpfile, &tcno, &ci, 1);
if (nci < 0)
return nci;
else if (nci == 0 || ci.ci_cno != cno)
Expand Down

0 comments on commit 8a253c2

Please sign in to comment.