Fixed some (most) style bugs in rev.1.33. Mainly 4-char indentation
(msdosfs uses normal 8-char indentation almost everywhere else), too-long lines, and minor English usage errors. The verbose formal comment before the new function is still abnormal.
This commit is contained in:
parent
e1402a88c6
commit
392dbea3f6
@ -1107,69 +1107,79 @@ extendfile(dep, count, bpp, ncp, flags)
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* [2753891]
|
||||
* Routine to mark a FAT16 or FAT32 volume as "clean" or "dirty" by manipulating the upper bit
|
||||
* of the FAT entry for cluster 1. Note that this bit is not defined for FAT12 volumes, which
|
||||
* are always assumed to be dirty.
|
||||
/*-
|
||||
* Routine to mark a FAT16 or FAT32 volume as "clean" or "dirty" by
|
||||
* manipulating the upper bit of the FAT entry for cluster 1. Note that
|
||||
* this bit is not defined for FAT12 volumes, which are always assumed to
|
||||
* be dirty.
|
||||
*
|
||||
* The fatentry() routine only works on cluster numbers that a file could occupy, so it won't
|
||||
* manipulate the entry for cluster 1. So we have to do it here. The code is ripped from
|
||||
* fatentry(), and tailored for cluster 1.
|
||||
* The fatentry() routine only works on cluster numbers that a file could
|
||||
* occupy, so it won't manipulate the entry for cluster 1. So we have to do
|
||||
* it here. The code was stolen from fatentry() and tailored for cluster 1.
|
||||
*
|
||||
* Inputs:
|
||||
* pmp The MS-DOS volume to mark
|
||||
* dirty Non-zero if the volume should be marked dirty; zero if it should be marked clean.
|
||||
* pmp The MS-DOS volume to mark
|
||||
* dirty Non-zero if the volume should be marked dirty; zero if it
|
||||
* should be marked clean
|
||||
*
|
||||
* Result:
|
||||
* 0 Success
|
||||
* EROFS Volume is read-only
|
||||
* ? (other errors from called routines)
|
||||
* 0 Success
|
||||
* EROFS Volume is read-only
|
||||
* ? (other errors from called routines)
|
||||
*/
|
||||
int markvoldirty(struct msdosfsmount *pmp, int dirty)
|
||||
int
|
||||
markvoldirty(struct msdosfsmount *pmp, int dirty)
|
||||
{
|
||||
int error;
|
||||
u_long bn, bo, bsize, byteoffset;
|
||||
u_long fatval;
|
||||
struct buf *bp;
|
||||
struct buf *bp;
|
||||
u_long bn, bo, bsize, byteoffset, fatval;
|
||||
int error;
|
||||
|
||||
/* FAT12 does not support a "clean" bit, so don't do anything */
|
||||
if (FAT12(pmp))
|
||||
return 0;
|
||||
/*
|
||||
* FAT12 does not support a "clean" bit, so don't do anything for
|
||||
* FAT12.
|
||||
*/
|
||||
if (FAT12(pmp))
|
||||
return (0);
|
||||
|
||||
/* Can't change the bit on a read-only filesystem */
|
||||
if (pmp->pm_flags & MSDOSFSMNT_RONLY)
|
||||
return EROFS;
|
||||
/* Can't change the bit on a read-only filesystem. */
|
||||
if (pmp->pm_flags & MSDOSFSMNT_RONLY)
|
||||
return (EROFS);
|
||||
|
||||
/* Fetch the block containing the FAT entry */
|
||||
byteoffset = FATOFS(pmp, 1); /* Find the location of cluster 1 */
|
||||
fatblock(pmp, byteoffset, &bn, &bsize, &bo);
|
||||
|
||||
error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
|
||||
if (error) {
|
||||
brelse(bp);
|
||||
return (error);
|
||||
}
|
||||
/*
|
||||
* Fetch the block containing the FAT entry. It is given by the
|
||||
* pseudo-cluster 1.
|
||||
*/
|
||||
byteoffset = FATOFS(pmp, 1);
|
||||
fatblock(pmp, byteoffset, &bn, &bsize, &bo);
|
||||
error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
|
||||
if (error) {
|
||||
brelse(bp);
|
||||
return (error);
|
||||
}
|
||||
|
||||
/* Get the current value of the FAT entry and set/clear the high bit */
|
||||
if (FAT32(pmp)) {
|
||||
/* FAT32 uses bit 27 */
|
||||
fatval = getulong(&bp->b_data[bo]);
|
||||
if (dirty)
|
||||
fatval &= 0xF7FFFFFF; /* dirty means clear the "clean" bit */
|
||||
else
|
||||
fatval |= 0x08000000; /* clean means set the "clean" bit */
|
||||
putulong(&bp->b_data[bo], fatval);
|
||||
}
|
||||
else {
|
||||
/* Must be FAT16; use bit 15 */
|
||||
fatval = getushort(&bp->b_data[bo]);
|
||||
if (dirty)
|
||||
fatval &= 0x7FFF; /* dirty means clear the "clean" bit */
|
||||
else
|
||||
fatval |= 0x8000; /* clean means set the "clean" bit */
|
||||
putushort(&bp->b_data[bo], fatval);
|
||||
}
|
||||
/*
|
||||
* Get the current value of the FAT entry and set/clear the relevant
|
||||
* bit. Dirty means clear the "clean" bit; clean means set the
|
||||
* "clean" bit.
|
||||
*/
|
||||
if (FAT32(pmp)) {
|
||||
/* FAT32 uses bit 27. */
|
||||
fatval = getulong(&bp->b_data[bo]);
|
||||
if (dirty)
|
||||
fatval &= 0xF7FFFFFF;
|
||||
else
|
||||
fatval |= 0x08000000;
|
||||
putulong(&bp->b_data[bo], fatval);
|
||||
} else {
|
||||
/* Must be FAT16; use bit 15. */
|
||||
fatval = getushort(&bp->b_data[bo]);
|
||||
if (dirty)
|
||||
fatval &= 0x7FFF;
|
||||
else
|
||||
fatval |= 0x8000;
|
||||
putushort(&bp->b_data[bo], fatval);
|
||||
}
|
||||
|
||||
/* Write out the modified FAT block immediately */
|
||||
return bwrite(bp);
|
||||
/* Write out the modified FAT block synchronously. */
|
||||
return (bwrite(bp));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user