Use symbolic name for the value of fully free word in pm_inusemap.
Explicitely mention every bit in the value. Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
This commit is contained in:
parent
1c4ec415e2
commit
f33d62b2d2
@ -60,6 +60,8 @@
|
||||
#include <fs/msdosfs/fat.h>
|
||||
#include <fs/msdosfs/msdosfsmount.h>
|
||||
|
||||
#define FULL_RUN ((u_int)0xffffffff)
|
||||
|
||||
static int chainalloc(struct msdosfsmount *pmp, u_long start,
|
||||
u_long count, u_long fillwith, u_long *retcluster,
|
||||
u_long *got);
|
||||
@ -752,8 +754,8 @@ clusteralloc1(struct msdosfsmount *pmp, u_long start, u_long count,
|
||||
idx = cn / N_INUSEBITS;
|
||||
map = pmp->pm_inusemap[idx];
|
||||
map |= (1 << (cn % N_INUSEBITS)) - 1;
|
||||
if (map != (u_int)-1) {
|
||||
cn = idx * N_INUSEBITS + ffs(map^(u_int)-1) - 1;
|
||||
if (map != FULL_RUN) {
|
||||
cn = idx * N_INUSEBITS + ffs(map ^ FULL_RUN) - 1;
|
||||
if ((l = chainlength(pmp, cn, count)) >= count)
|
||||
return (chainalloc(pmp, cn, count, fillwith, retcluster, got));
|
||||
if (l > foundl) {
|
||||
@ -769,8 +771,8 @@ clusteralloc1(struct msdosfsmount *pmp, u_long start, u_long count,
|
||||
idx = cn / N_INUSEBITS;
|
||||
map = pmp->pm_inusemap[idx];
|
||||
map |= (1 << (cn % N_INUSEBITS)) - 1;
|
||||
if (map != (u_int)-1) {
|
||||
cn = idx * N_INUSEBITS + ffs(map^(u_int)-1) - 1;
|
||||
if (map != FULL_RUN) {
|
||||
cn = idx * N_INUSEBITS + ffs(map ^ FULL_RUN) - 1;
|
||||
if ((l = chainlength(pmp, cn, count)) >= count)
|
||||
return (chainalloc(pmp, cn, count, fillwith, retcluster, got));
|
||||
if (l > foundl) {
|
||||
@ -878,7 +880,7 @@ fillinusemap(struct msdosfsmount *pmp)
|
||||
* loop further down.
|
||||
*/
|
||||
for (cn = 0; cn < (pmp->pm_maxcluster + N_INUSEBITS) / N_INUSEBITS; cn++)
|
||||
pmp->pm_inusemap[cn] = (u_int)-1;
|
||||
pmp->pm_inusemap[cn] = FULL_RUN;
|
||||
|
||||
/*
|
||||
* Figure how many free clusters are in the filesystem by ripping
|
||||
|
Loading…
Reference in New Issue
Block a user