Skip to content
  • Artem Bityutskiy's avatar
    affs: stop setting bm_flags · bc86256d
    Artem Bityutskiy authored
    
    
    AFFS stores values '1' and '2' in 'bm_flags', and I fail to see any logic when
    it prefers one or another. AFFS writes '1' only from '->put_super()', while
    '->sync_fs()' and '->write_super()' store value '2'.  So on the first glance,
    it looks like we want to have '1' if we unmount.  However, this does not really
    happen in these cases:
      1. superblock is written via 'write_super()' then we unmount;
      2. we re-mount R/O, then unmount.
    which are quite typical.
    
    I could not find good documentation describing this field, except of one random
    piece of documentation in the internet which says that -1 means that the root
    block is valid, which is not consistent with what we have in the Linux AFFS
    driver.
    
    Jan Kara commented on this: "I have some vague recollection that on Amiga
    boolean was usually encoded as: 0 == false, ~0 == -1 == true. But it has been
    ages..."
    
    Thus, my conclusion is that value of '1' is as good as value of '2' and we can
    just always use '2'. An Jan Kara suggested to go further: "generally bm_flags
    handling looks strange. If they are 0, we mount fs read only and thus cannot
    change them.  If they are != 0, we write 2 there. So IMHO if you just removed
    bm_flags setting, nothing will really happen."
    
    So this patch removes the bm_flags setting completely. This makes the "clean"
    argument of the 'affs_commit_super()' function unneeded, so it is also removed.
    
    Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    bc86256d