Пример #1
0
        public RedFS_Inode get_inode_file_wip(string requester)
        {
            if (_ninowip == null)
            {
                _ninowip = new RedFS_Inode(WIP_TYPE.PUBLIC_INODE_FILE, 0, -1);
                for (int i = 0; i < 128; i++)
                {
                    _ninowip.data[i] = data[CFSvalueoffsets.fsid_inofile_data + i];
                }
                _ninowip.set_wiptype(WIP_TYPE.PUBLIC_INODE_FILE);
                _ninowip.setfilefsid_on_dirty(m_dbn);
            }

            DEFS.DEBUG("FSID", "Giving a inowip to " + requester);
            return(_ninowip);
        }
Пример #2
0
        public static bool Checkout_Wip2(RedFS_Inode inowip, RedFS_Inode mywip, int m_ino)
        {
            WIP_TYPE oldtype = mywip.get_wiptype();

            for (int i = 0; i < 16; i++)
            {
                DEFS.ASSERT(mywip.get_child_dbn(i) == DBN.INVALID, "Wip cannot be valid during checkout, " +
                            i + " value = " + mywip.get_child_dbn(i));
            }
            long fileoffset = m_ino * 128;

            lock (inowip)
            {
                REDDY.ptrRedFS.redfs_read(inowip, fileoffset, mywip.data, 0, 128);
                if (oldtype != WIP_TYPE.UNDEFINED)
                {
                    mywip.set_wiptype(oldtype);
                }
            }
            DEFS.DEBUG("CO_WIP", mywip.get_string_rep2());
            return(mywip.verify_inode_number());
        }