git: sbin/hammer: Avoid pfs via pfs on creation, not on status|destroy|upgrade|downgrade|update

Tomohiro Kusumi tkusumi at crater.dragonflybsd.org
Wed Apr 1 14:32:36 PDT 2015


commit 04a0b05ced614569686b573a192625f3c16205f7
Author: Tomohiro Kusumi <kusumi.tomohiro at gmail.com>
Date:   Tue Mar 31 04:03:26 2015 +0900

    sbin/hammer: Avoid pfs via pfs on creation, not on status|destroy|upgrade|downgrade|update
    
    - According to the getpfs() implementation, hammer command wants to
      avoid users create pfs via pfs (avoid-foot-shooting). However, it
      needs to be done when creating the pfs.
    
    - Currently getpfs() is called by all pfs related commands except for
      creation (pfs-master, pfs-slave). This makes it possible for users
      to create pfs via pfs, but unable to status|destroy|upgrade|downgrade
      |update the once created pfs via pfs. In order to avoid this it should
      avoid pfs via pfs on pfs creation instead of in getpfs(). This also
      ensures other pfs related commands that handle pfs are protected from
      pfs via pfs.
    
    - This commit also allows users to destroy once created pfs via pfs
      (by existing /sbin/hammer) as following examples show.
    
      ==========
      example1 - using existing /sbin/hammer
    
      # mount | grep TEST
      TEST on /HAMMER (hammer, local)
      # pwd
      /HAMMER
      # hammer pfs-master test1 > /dev/null
      # mkdir ./mnt1
      # mount_null ./test1 ./mnt1
      # cd ./mnt1
      # hammer pfs-master test2
      Creating PFS #2 succeeded!
      You are attempting to access a PFS softlink from a PFS.  It may not represent the PFS
      on the main filesystem mount that you expect!  You may only access PFS softlinks
      via the main filesystem mount!
    
      created pfs via pfs, but can't destroy (or any other command) it
    
      # hammer pfs-destroy ./test2
      You are attempting to access a PFS softlink from a PFS.  It may not represent the PFS
      on the main filesystem mount that you expect!  You may only access PFS softlinks
      via the main filesystem mount!
    
      ==========
      example2 - using this commit to properly destroy above test2
    
      # hammer pfs-destroy ./test2
      You have requested that PFS#2 () be destroyed
      This will irrevocably destroy all data on this PFS!!!!!
      Do you really want to do this? y
      This PFS is currently setup as a MASTER!
      Are you absolutely sure you want to destroy it? y
      Destroying PFS #2 () in  5 4 3 2 1.. starting destruction pass
      pfs-destroy of PFS#2 succeeded!
    
      pfs via pfs should be avoided on creation, but not after that.
    
      # hammer pfs-master test2
      You are attempting to access a PFS softlink from a PFS.  It may not represent the PFS
      on the main filesystem mount that you expect!  You may only access PFS softlinks
      via the main filesystem mount!

Summary of changes:
 sbin/hammer/cmd_pseudofs.c | 46 ++++++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 22 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/04a0b05ced614569686b573a192625f3c16205f7


-- 
DragonFly BSD source repository


More information about the Commits mailing list