> I would like to start an effort to get xfs on a SUN UE250 (2 cpu, 512Mb
> ram 8 x 18G scsi disks),
> I got some trouble trying to get it to compile... but working on it....
> is there anybody out there that likes to do the same... might combine
> our efforts...
One aspect we have been warned about on the sparc is the fact that the
internal locking functions within xfs (see fs/xfs/linux/xfs_locks.c and
xfs_locks.h) is that we pass the saved interrupt state around on the
stack - which, I am told will not work on the sparc. It should be
possible to make these functions (sv_wait is the culprit) inline to
work around this. This may explain the sparc32 hang. I think some of the
code plays fast and loose with the type used to save the interrupt state,
it may not be big enough on some 64 bit platforms.
Code like this is where it may be broken:
spl = LOG_LOCK(log);
if (!(iclog->ic_state == XLOG_STATE_ACTIVE ||
iclog->ic_state == XLOG_STATE_DIRTY)) {
if (!XLOG_FORCED_SHUTDOWN(log)) {
sv_wait(&iclog->ic_forcesema, PMEM,
&log->l_icloglock, spl);
} else {
LOG_UNLOCK(log, spl);
}
} else {
LOG_UNLOCK(log, spl);
}
where LOG_LOCK is mutex_spinlock(&(log)->l_icloglock) which is
static __inline__ int mutex_spinlock(spinlock_t *l)
{
long flags;
spin_lock_irqsave(l, flags);
return(flags);
}
and spl is declared as an int.
Steve
|