SCCS-vsn: sys/ufs/ffs/ffs_alloc.c 2.5
SCCS-vsn: sys/ufs/lfs/lfs_alloc.c 2.5
-/* ffs_alloc.c 2.4 82/04/19 */
+/* ffs_alloc.c 2.5 82/05/07 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
- if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0)
+ if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0) {
+ printf("dev = 0x%x, bsize = %d, size = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, size, fs->fs_fsmnt);
panic("alloc: bad size");
panic("alloc: bad size");
if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0)
goto nospace;
if (u.u_uid != 0 &&
if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0)
goto nospace;
if (u.u_uid != 0 &&
fs = ip->i_fs;
if ((unsigned)osize > fs->fs_bsize || fragoff(fs, osize) != 0 ||
fs = ip->i_fs;
if ((unsigned)osize > fs->fs_bsize || fragoff(fs, osize) != 0 ||
- (unsigned)nsize > fs->fs_bsize || fragoff(fs, nsize) != 0)
+ (unsigned)nsize > fs->fs_bsize || fragoff(fs, nsize) != 0) {
+ printf("dev = 0x%x, bsize = %d, osize = %d, nsize = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, osize, nsize, fs->fs_fsmnt);
panic("realloccg: bad size");
panic("realloccg: bad size");
if (u.u_uid != 0 &&
fs->fs_cstotal.cs_nbfree * fs->fs_frag + fs->fs_cstotal.cs_nffree <
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
if (u.u_uid != 0 &&
fs->fs_cstotal.cs_nbfree * fs->fs_frag + fs->fs_cstotal.cs_nffree <
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
+ if (bprev == 0) {
+ printf("dev = 0x%x, bsize = %d, bprev = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, bprev, fs->fs_fsmnt);
panic("realloccg: bad bprev");
panic("realloccg: bad bprev");
cg = dtog(fs, bprev);
bno = fragextend(ip, cg, (long)bprev, osize, nsize);
if (bno != 0) {
cg = dtog(fs, bprev);
bno = fragextend(ip, cg, (long)bprev, osize, nsize);
if (bno != 0) {
ifree(ip, ino, 0);
return (NULL);
}
ifree(ip, ino, 0);
return (NULL);
}
+ if (ip->i_mode) {
+ printf("mode = 0%o, inum = %d, fs = %s\n",
+ ip->i_mode, ip->i_number, fs->fs_fsmnt);
panic("ialloc: dup alloc");
panic("ialloc: dup alloc");
return (ip);
noinodes:
fserr(fs, "out of inodes");
return (ip);
noinodes:
fserr(fs, "out of inodes");
*/
pos = cylno % fs->fs_cpc;
bno = (cylno - pos) * fs->fs_spc / NSPB(fs);
*/
pos = cylno % fs->fs_cpc;
bno = (cylno - pos) * fs->fs_spc / NSPB(fs);
- if (fs->fs_postbl[pos][i] == -1)
+ if (fs->fs_postbl[pos][i] == -1) {
+ printf("pos = %d, i = %d, fs = %s\n",
+ pos, i, fs->fs_fsmnt);
panic("alloccgblk: cyl groups corrupted");
panic("alloccgblk: cyl groups corrupted");
for (i = fs->fs_postbl[pos][i];; ) {
if (isblock(fs, cgp->cg_free, bno + i)) {
bno = (bno + i) * fs->fs_frag;
for (i = fs->fs_postbl[pos][i];; ) {
if (isblock(fs, cgp->cg_free, bno + i)) {
bno = (bno + i) * fs->fs_frag;
+ printf("pos = %d, i = %d, fs = %s\n", pos, i, fs->fs_fsmnt);
panic("alloccgblk: can't find blk in cyl");
}
norot:
panic("alloccgblk: can't find blk in cyl");
}
norot:
register int i;
fs = ip->i_fs;
register int i;
fs = ip->i_fs;
- if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0)
+ if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0) {
+ printf("dev = 0x%x, bsize = %d, size = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, size, fs->fs_fsmnt);
cg = dtog(fs, bno);
if (badblock(fs, bno)) {
printf("bad block %d, ino %d\n", bno, ip->i_number);
cg = dtog(fs, bno);
if (badblock(fs, bno)) {
printf("bad block %d, ino %d\n", bno, ip->i_number);
bno = dtogd(fs, bno);
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag)) {
bno = dtogd(fs, bno);
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag)) {
- printf("free block %d, fs %s\n", bno, fs->fs_fsmnt);
+ printf("dev = 0x%x, block = %d, fs = %s\n",
+ ip->i_dev, bno, fs->fs_fsmnt);
panic("free: freeing free block");
}
setblock(fs, cgp->cg_free, bno/fs->fs_frag);
panic("free: freeing free block");
}
setblock(fs, cgp->cg_free, bno/fs->fs_frag);
*/
frags = numfrags(fs, size);
for (i = 0; i < frags; i++) {
*/
frags = numfrags(fs, size);
for (i = 0; i < frags; i++) {
- if (isset(cgp->cg_free, bno + i))
+ if (isset(cgp->cg_free, bno + i)) {
+ printf("dev = 0x%x, block = %d, fs = %s\n",
+ ip->i_dev, bno + i, fs->fs_fsmnt);
panic("free: freeing free frag");
panic("free: freeing free frag");
setbit(cgp->cg_free, bno + i);
}
cgp->cg_cs.cs_nffree += i;
setbit(cgp->cg_free, bno + i);
}
cgp->cg_cs.cs_nffree += i;
- if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
+ if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg) {
+ printf("dev = 0x%x, ino = %d, fs = %s\n",
+ ip->i_dev, ino, fs->fs_fsmnt);
cg = itog(fs, ino);
bp = bread(ip->i_dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
cgp = bp->b_un.b_cg;
cg = itog(fs, ino);
bp = bread(ip->i_dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
cgp = bp->b_un.b_cg;
return;
}
ino %= fs->fs_ipg;
return;
}
ino %= fs->fs_ipg;
- if (isclr(cgp->cg_iused, ino))
+ if (isclr(cgp->cg_iused, ino)) {
+ printf("dev = 0x%x, ino = %d, fs = %s\n",
+ ip->i_dev, ino, fs->fs_fsmnt);
panic("ifree: freeing free inode");
panic("ifree: freeing free inode");
clrbit(cgp->cg_iused, ino);
cgp->cg_cs.cs_nifree++;
fs->fs_cstotal.cs_nifree++;
clrbit(cgp->cg_iused, ino);
cgp->cg_cs.cs_nifree++;
fs->fs_cstotal.cs_nifree++;
loc = scanc(len, &cgp->cg_free[start], fragtbl[fs->fs_frag],
1 << (allocsiz - 1 + (fs->fs_frag % NBBY)));
if (loc == 0) {
loc = scanc(len, &cgp->cg_free[start], fragtbl[fs->fs_frag],
1 << (allocsiz - 1 + (fs->fs_frag % NBBY)));
if (loc == 0) {
+ printf("start = %d, len = %d, fs = %s\n",
+ start, len, fs->fs_fsmnt);
panic("alloccg: map corrupted");
return (-1);
}
panic("alloccg: map corrupted");
return (-1);
}
+ printf("bno = %d, fs = %s\n", bno, fs->fs_fsmnt);
panic("alloccg: block not in map");
return (-1);
}
panic("alloccg: block not in map");
return (-1);
}
if (mp->m_bufp == NULL || mp->m_dev != dev)
continue;
fs = mp->m_bufp->b_un.b_fs;
if (mp->m_bufp == NULL || mp->m_dev != dev)
continue;
fs = mp->m_bufp->b_un.b_fs;
- if (fs->fs_magic != FS_MAGIC)
+ if (fs->fs_magic != FS_MAGIC) {
+ printf("dev = 0x%x, fs = %s\n", dev, fs->fs_fsmnt);
panic("getfs: bad magic");
panic("getfs: bad magic");
+ printf("dev = 0x%x\n", dev);
panic("getfs: no fs");
return (NULL);
}
panic("getfs: no fs");
return (NULL);
}
fs = mp->m_bufp->b_un.b_fs;
if (fs->fs_fmod == 0)
continue;
fs = mp->m_bufp->b_un.b_fs;
if (fs->fs_fmod == 0)
continue;
+ if (fs->fs_ronly != 0) {
+ printf("fs = %s\n", fs->fs_fsmnt);
panic("update: rofs mod");
panic("update: rofs mod");
bp = getblk(mp->m_dev, SBLOCK, SBSIZE);
bp = getblk(mp->m_dev, SBLOCK, SBSIZE);
- if (bp->b_un.b_fs != fs || fs->fs_magic != FS_MAGIC)
+ if (bp->b_un.b_fs != fs || fs->fs_magic != FS_MAGIC) {
+ printf("fs = %s\n", fs->fs_fsmnt);
panic("update: bad b_fs");
panic("update: bad b_fs");
fs->fs_fmod = 0;
fs->fs_time = time;
bwrite(bp);
fs->fs_fmod = 0;
fs->fs_time = time;
bwrite(bp);
-/* lfs_alloc.c 2.4 82/04/19 */
+/* lfs_alloc.c 2.5 82/05/07 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
- if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0)
+ if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0) {
+ printf("dev = 0x%x, bsize = %d, size = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, size, fs->fs_fsmnt);
panic("alloc: bad size");
panic("alloc: bad size");
if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0)
goto nospace;
if (u.u_uid != 0 &&
if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0)
goto nospace;
if (u.u_uid != 0 &&
fs = ip->i_fs;
if ((unsigned)osize > fs->fs_bsize || fragoff(fs, osize) != 0 ||
fs = ip->i_fs;
if ((unsigned)osize > fs->fs_bsize || fragoff(fs, osize) != 0 ||
- (unsigned)nsize > fs->fs_bsize || fragoff(fs, nsize) != 0)
+ (unsigned)nsize > fs->fs_bsize || fragoff(fs, nsize) != 0) {
+ printf("dev = 0x%x, bsize = %d, osize = %d, nsize = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, osize, nsize, fs->fs_fsmnt);
panic("realloccg: bad size");
panic("realloccg: bad size");
if (u.u_uid != 0 &&
fs->fs_cstotal.cs_nbfree * fs->fs_frag + fs->fs_cstotal.cs_nffree <
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
if (u.u_uid != 0 &&
fs->fs_cstotal.cs_nbfree * fs->fs_frag + fs->fs_cstotal.cs_nffree <
fs->fs_dsize * fs->fs_minfree / 100)
goto nospace;
+ if (bprev == 0) {
+ printf("dev = 0x%x, bsize = %d, bprev = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, bprev, fs->fs_fsmnt);
panic("realloccg: bad bprev");
panic("realloccg: bad bprev");
cg = dtog(fs, bprev);
bno = fragextend(ip, cg, (long)bprev, osize, nsize);
if (bno != 0) {
cg = dtog(fs, bprev);
bno = fragextend(ip, cg, (long)bprev, osize, nsize);
if (bno != 0) {
ifree(ip, ino, 0);
return (NULL);
}
ifree(ip, ino, 0);
return (NULL);
}
+ if (ip->i_mode) {
+ printf("mode = 0%o, inum = %d, fs = %s\n",
+ ip->i_mode, ip->i_number, fs->fs_fsmnt);
panic("ialloc: dup alloc");
panic("ialloc: dup alloc");
return (ip);
noinodes:
fserr(fs, "out of inodes");
return (ip);
noinodes:
fserr(fs, "out of inodes");
*/
pos = cylno % fs->fs_cpc;
bno = (cylno - pos) * fs->fs_spc / NSPB(fs);
*/
pos = cylno % fs->fs_cpc;
bno = (cylno - pos) * fs->fs_spc / NSPB(fs);
- if (fs->fs_postbl[pos][i] == -1)
+ if (fs->fs_postbl[pos][i] == -1) {
+ printf("pos = %d, i = %d, fs = %s\n",
+ pos, i, fs->fs_fsmnt);
panic("alloccgblk: cyl groups corrupted");
panic("alloccgblk: cyl groups corrupted");
for (i = fs->fs_postbl[pos][i];; ) {
if (isblock(fs, cgp->cg_free, bno + i)) {
bno = (bno + i) * fs->fs_frag;
for (i = fs->fs_postbl[pos][i];; ) {
if (isblock(fs, cgp->cg_free, bno + i)) {
bno = (bno + i) * fs->fs_frag;
+ printf("pos = %d, i = %d, fs = %s\n", pos, i, fs->fs_fsmnt);
panic("alloccgblk: can't find blk in cyl");
}
norot:
panic("alloccgblk: can't find blk in cyl");
}
norot:
register int i;
fs = ip->i_fs;
register int i;
fs = ip->i_fs;
- if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0)
+ if ((unsigned)size > fs->fs_bsize || fragoff(fs, size) != 0) {
+ printf("dev = 0x%x, bsize = %d, size = %d, fs = %s\n",
+ ip->i_dev, fs->fs_bsize, size, fs->fs_fsmnt);
cg = dtog(fs, bno);
if (badblock(fs, bno)) {
printf("bad block %d, ino %d\n", bno, ip->i_number);
cg = dtog(fs, bno);
if (badblock(fs, bno)) {
printf("bad block %d, ino %d\n", bno, ip->i_number);
bno = dtogd(fs, bno);
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag)) {
bno = dtogd(fs, bno);
if (size == fs->fs_bsize) {
if (isblock(fs, cgp->cg_free, bno/fs->fs_frag)) {
- printf("free block %d, fs %s\n", bno, fs->fs_fsmnt);
+ printf("dev = 0x%x, block = %d, fs = %s\n",
+ ip->i_dev, bno, fs->fs_fsmnt);
panic("free: freeing free block");
}
setblock(fs, cgp->cg_free, bno/fs->fs_frag);
panic("free: freeing free block");
}
setblock(fs, cgp->cg_free, bno/fs->fs_frag);
*/
frags = numfrags(fs, size);
for (i = 0; i < frags; i++) {
*/
frags = numfrags(fs, size);
for (i = 0; i < frags; i++) {
- if (isset(cgp->cg_free, bno + i))
+ if (isset(cgp->cg_free, bno + i)) {
+ printf("dev = 0x%x, block = %d, fs = %s\n",
+ ip->i_dev, bno + i, fs->fs_fsmnt);
panic("free: freeing free frag");
panic("free: freeing free frag");
setbit(cgp->cg_free, bno + i);
}
cgp->cg_cs.cs_nffree += i;
setbit(cgp->cg_free, bno + i);
}
cgp->cg_cs.cs_nffree += i;
- if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg)
+ if ((unsigned)ino >= fs->fs_ipg*fs->fs_ncg) {
+ printf("dev = 0x%x, ino = %d, fs = %s\n",
+ ip->i_dev, ino, fs->fs_fsmnt);
cg = itog(fs, ino);
bp = bread(ip->i_dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
cgp = bp->b_un.b_cg;
cg = itog(fs, ino);
bp = bread(ip->i_dev, fsbtodb(fs, cgtod(fs, cg)), fs->fs_bsize);
cgp = bp->b_un.b_cg;
return;
}
ino %= fs->fs_ipg;
return;
}
ino %= fs->fs_ipg;
- if (isclr(cgp->cg_iused, ino))
+ if (isclr(cgp->cg_iused, ino)) {
+ printf("dev = 0x%x, ino = %d, fs = %s\n",
+ ip->i_dev, ino, fs->fs_fsmnt);
panic("ifree: freeing free inode");
panic("ifree: freeing free inode");
clrbit(cgp->cg_iused, ino);
cgp->cg_cs.cs_nifree++;
fs->fs_cstotal.cs_nifree++;
clrbit(cgp->cg_iused, ino);
cgp->cg_cs.cs_nifree++;
fs->fs_cstotal.cs_nifree++;
loc = scanc(len, &cgp->cg_free[start], fragtbl[fs->fs_frag],
1 << (allocsiz - 1 + (fs->fs_frag % NBBY)));
if (loc == 0) {
loc = scanc(len, &cgp->cg_free[start], fragtbl[fs->fs_frag],
1 << (allocsiz - 1 + (fs->fs_frag % NBBY)));
if (loc == 0) {
+ printf("start = %d, len = %d, fs = %s\n",
+ start, len, fs->fs_fsmnt);
panic("alloccg: map corrupted");
return (-1);
}
panic("alloccg: map corrupted");
return (-1);
}
+ printf("bno = %d, fs = %s\n", bno, fs->fs_fsmnt);
panic("alloccg: block not in map");
return (-1);
}
panic("alloccg: block not in map");
return (-1);
}
if (mp->m_bufp == NULL || mp->m_dev != dev)
continue;
fs = mp->m_bufp->b_un.b_fs;
if (mp->m_bufp == NULL || mp->m_dev != dev)
continue;
fs = mp->m_bufp->b_un.b_fs;
- if (fs->fs_magic != FS_MAGIC)
+ if (fs->fs_magic != FS_MAGIC) {
+ printf("dev = 0x%x, fs = %s\n", dev, fs->fs_fsmnt);
panic("getfs: bad magic");
panic("getfs: bad magic");
+ printf("dev = 0x%x\n", dev);
panic("getfs: no fs");
return (NULL);
}
panic("getfs: no fs");
return (NULL);
}
fs = mp->m_bufp->b_un.b_fs;
if (fs->fs_fmod == 0)
continue;
fs = mp->m_bufp->b_un.b_fs;
if (fs->fs_fmod == 0)
continue;
+ if (fs->fs_ronly != 0) {
+ printf("fs = %s\n", fs->fs_fsmnt);
panic("update: rofs mod");
panic("update: rofs mod");
bp = getblk(mp->m_dev, SBLOCK, SBSIZE);
bp = getblk(mp->m_dev, SBLOCK, SBSIZE);
- if (bp->b_un.b_fs != fs || fs->fs_magic != FS_MAGIC)
+ if (bp->b_un.b_fs != fs || fs->fs_magic != FS_MAGIC) {
+ printf("fs = %s\n", fs->fs_fsmnt);
panic("update: bad b_fs");
panic("update: bad b_fs");
fs->fs_fmod = 0;
fs->fs_time = time;
bwrite(bp);
fs->fs_fmod = 0;
fs->fs_time = time;
bwrite(bp);