- struct inode *inode = dentry->d_inode;
- struct page *page = NULL;
- char * link;
-
- ENTRY;
- link = obdfs_i2info(inode)->oi_inline;
- if (!obdfs_has_inline(inode)) {
- OIDEBUG(inode);
- page = obdfs_getpage(inode, 0, 0, 0);
- PDEBUG(page, "follow_link");
- if (!page) {
- dput(base);
- EXIT;
- return ERR_PTR(-EIO);
- }
- link = (char *)page_address(page);
- }
- UPDATE_ATIME(inode);
- base = lookup_dentry(link, base, follow);
- if (page) {
- page_cache_release(page);
- }
- EXIT;
- return base;
+ char *s = obdfs_i2info(dentry->d_inode)->oi_inline;
+ return vfs_readlink(dentry, buffer, buflen, s);