**/
static struct inode *osd_iget2(struct osd_thread_info *info,
struct osd_device *dev, struct osd_inode_id *id,
- int *err)
+ bool special, int *err)
{
- int rc = 0;
struct inode *inode = NULL;
+ int rc = 0;
/*
* if we look for an inode withing a running
*/
/* LASSERT(current->journal_info == NULL); */
- inode = osd_ldiskfs_iget(osd_sb(dev), id->oii_ino);
+ inode = osd_ldiskfs_iget_special(osd_sb(dev), id->oii_ino, special);
if (IS_ERR(inode)) {
CDEBUG(D_INODE, "no inode: ino = %u, rc = %ld\n",
id->oii_ino, PTR_ERR(inode));
struct inode *inode;
int rc = 0;
- inode = osd_iget2(info, dev, id, &rc);
+ inode = osd_iget2(info, dev, id, 0, &rc);
if (rc) {
iput(inode);
bool trusted)
{
struct inode *inode;
+ bool special = false;
int rc = 0;
ENTRY;
* directly without further OI checking.
*/
+ if (unlikely(fid_is_acct(fid)))
+ special = true;
again:
- inode = osd_iget2(info, dev, id, &rc);
+ inode = osd_iget2(info, dev, id, special, &rc);
if (rc) {
if (!trusted && (rc == -ENOENT || rc == -ESTALE))
goto check_oi;