831
832 if (jfs_ip->fileset != AGGREGATE_I) {
833 printk(KERN_ERR "txLock: trying to lock locked page!");
834 print_hex_dump(KERN_ERR, "ip: ", DUMP_PREFIX_ADDRESS, 16, 4,
835 ip, sizeof(*ip), 0);
836 print_hex_dump(KERN_ERR, "mp: ", DUMP_PREFIX_ADDRESS, 16, 4,
837 mp, sizeof(*mp), 0);
838 print_hex_dump(KERN_ERR, "Locker's tblock: ",
839 DUMP_PREFIX_ADDRESS, 16, 4, tid_to_tblock(tid),
840 sizeof(struct tblock), 0);
841 print_hex_dump(KERN_ERR, "Tlock: ", DUMP_PREFIX_ADDRESS, 16, 4,
842 tlck, sizeof(*tlck), 0);
843 BUG();
844 }
845 INCREMENT(stattx.waitlock);
846 TXN_UNLOCK();
847 release_metapage(mp);
848 TXN_LOCK();
849 xtid = tlck->tid;
850
851 jfs_info("txLock: in waitLock, tid = %d, xtid = %d, lid = %d",
852 tid, xtid, lid);
853
854
855 if (xtid && (tlck->mp == mp) && (mp->lid == lid))
856 TXN_SLEEP_DROP_LOCK(&tid_to_tblock(xtid)->waitor);
857 else
858 TXN_UNLOCK();
859 jfs_info("txLock: awakened tid = %d, lid = %d", tid, lid);
860
861 return NULL;
862}
863
864
865
866
867
868
869
870
871