On Tue,  3 Jan 2012 13:46:00 -0600, Dan McGee wrote:
> When running as non-root, the error message seems to indicate a
> checkpoint is a snapshot, rather than the actual problem, which is that
> I do not have permission to delete the checkpoints.
> 
> Before:
>     $ rmcp 29..35
>     rmcp: 29: cannot remove snapshot
>     rmcp: 30: cannot remove snapshot
>     rmcp: 31: cannot remove snapshot
>     rmcp: 32: cannot remove snapshot
>     rmcp: 33: cannot remove snapshot
>     rmcp: 34: cannot remove snapshot
>     rmcp: 35: cannot remove snapshot
> 
>     To delete snapshot(s), change them into checkpoints with
>     chcp command before removal.
> 
> After:
>     $ ./bin/rmcp 29..35
>     lt-rmcp: 29: cannot remove checkpoint: Operation not permitted
>     Remaining checkpoints were not removed.
> 
> Since May 2009 the kernel has returned EBUSY instead of EPERM for
> removal requests against snapshots, commit 30c25be71fcbd87fd. We should
> be able to treat EPERM as expected now, as the commit message there
> indicates.
> 
> Signed-off-by: Dan McGee <[email protected]>

All your patches were applied to nilfs-utils git repository.

Thank you very much.

Ryusuke Konishi

> ---
>  bin/rmcp.c |   11 ++++++++---
>  1 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/bin/rmcp.c b/bin/rmcp.c
> index 780a192..9f4666a 100644
> --- a/bin/rmcp.c
> +++ b/bin/rmcp.c
> @@ -105,7 +105,7 @@ static int rmcp_remove_range(struct nilfs *nilfs,
>                       nd++;
>                       continue;
>               }
> -             if (errno == EBUSY || errno == EPERM) {
> +             if (errno == EBUSY) {
>                       nss++;
>                       if (!force) {
>                               fprintf(stderr,
> @@ -115,7 +115,10 @@ static int rmcp_remove_range(struct nilfs *nilfs,
>               } else if (errno == ENOENT) {
>                       nocp++;
>               } else {
> -                     fprintf(stderr, "%s: %s\n", progname, strerror(errno));
> +                     fprintf(stderr,
> +                             "%s: %llu: cannot remove checkpoint: %s\n",
> +                             progname, (unsigned long long)cno,
> +                             strerror(errno));
>                       ret = -1;
>                       goto out;
>               }
> @@ -237,8 +240,10 @@ int main(int argc, char *argv[])
>                       continue;
>  
>               status = 1;
> -             if (ret < 0)
> +             if (ret < 0) {
> +                     fprintf(stderr, "Remaining checkpoints were not 
> removed.\n");
>                       break;
> +             }
>  
>               if (force || ndel != 0 || end - start + 1 - nss == 0)
>                       continue;
> -- 
> 1.7.8.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to